python全栈开发 * 23 面向对象 知识点汇总 * 180704

23 面向对象         -----特殊方法
1. isinstance(obj,类名)     判断对象是否是此类实例化或者此类的子类实例化出来的class A:passclass B(A):passb1=B()print(isinstance(b1,B))     # Trueprint(isinstance(b1,A))     # True2.issubclass(类名,类名1)    判断类名是否是类名1的子类class A:passclass B(A):passprint(issubclass(B,A))     #Trueprint(issubclass(A,B))     #False
3.__len__用法class C:    def __init__(self):        self.a=1        self.b=2    def __len__(self):        return len(self.__dict__)c1=C()print(len(c1))4.__hash__用法class C:    def __init__(self):        self.a=1        self.b=2    def __hash__(self):        return hash(str(self.a)+str(self.b))c1=C()print(hash(c1))5.__str__用法    如果一个类中定义了__str__方法,那么在打印 对象 时,默认输出该方法的返回值class B:    def __init__(self,name,age):        self.name=name        self.age=age    def __repr__(self):        return "太白"b2=B("alex1",1000)print(b2)print("%s"% b2)

6.__repr__用法   如果一个类中定义了__repr__方法,那么在repr(对象) 时,默认输出该方法的返回值class B:    def __init__(self,name,age):        self.name=name        self.age=age    def __repr__(self):        print("666")        return "太白"b1=B("alex",1000)print(repr(b1))    # 方法一print("%r"% b1)    # 方法二#补充知识:格式化输出# %s 数字和字符串   %r +""  repr  原形毕露   %d   数字   %f   小数7.__call__用法   构造方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 __call__ 方法的执行是由对象后加括号触发的, 即:对象() 或者 类()()class Foo:    def __init__(self):        pass    def __call__(self,*args,**kwargs):        print(args,kwargs)a1=Foo()a1("alex",a=666)      #(‘alex‘,) {‘a‘: 666}

8.__eq__用法      对一个类实例化的两个对象进行比较运算的时候自动触发.class A:    def __init__(self,):        self.a=1        self.b=2    def __eq__(self,obj):         #  需要手动传一个参数        if self.a==obj.a and self.b==obj.b:            return Truea1=A()b1=A()print(a1==b1)9.__del__用法      析构方法#python垃圾回收机制:#文件中你创建的所有的变量,类等等,执行过程中将所有变量,类做个标记,执行完之后,在一段时间之内,没有被调用,则会自动回收.class A:    def __del__(self):        print("666")a1=A()a1.__del__

10.__new__用法class A:    def __init__(self):        self.x=1        print("in init function")          # 第五步    def __new__(cls,*args,**kwargs):         # 第二步  自动执行__new__方法        print(cls)                           # 第三步<class ‘__main__.A‘>        print("in new function")           # 第四步

return super().__new__(cls)         # 返回一个对象空间        return object.__new__(cls)           第二种方法a1=A()                                       # 第一步   类名加括号11.设计模式:单例模式: 对一个类只能实例化一个对象.最简单的设计模式,   (面试必考)class A:    __instance=None    def __new__(cls, *argsm, **kwargs):        if A.__instance is None:            obj=object.__new__(cls)            A.__instance=obj        return A.__instancea1=A()b1=A()c1=A()print(a1,b1,c1)12.item  用法class Foo:    def __init__(self,name):        self.name=name    def __getitem__(self,item):        if hasattr(self,item):            return getattr(self,item)        else:            print("没有此变量")    def __setitem__(self,key,value):        print(key,value)    def __delitem__(self,key):        print(key)

f1=Foo("alex")print(f1["name"])f1["name"]="mary"del f1["name"]

原文地址:https://www.cnblogs.com/J-7-H-2-F-7/p/9265367.html

时间: 2024-10-09 13:18:16

python全栈开发 * 23 面向对象 知识点汇总 * 180704的相关文章

python全栈开发 * 18 面向对象知识点汇总 * 180530

18 面向对象初识1class person: level="高级动物" mind="有思想" def __init__(self,name,age,gent,area,hobby): self.name=name self.age=age self.gent=gent self.area=area self.hobby=hobby print("__init__") pass def walk(self): pass def eat(self)

Python全栈开发之面向对象

No.1 概念 面向对象的特点? 注重对象和指责,不同的对象承担各自的指责 更加适合对复杂的需求变化,专门应对复杂项目开发,提供固定的套路 面向对象强调的是谁来做,面向过程强调的如何做 什么是类 类是对一群具有相同特征或者行为的事物统称,是抽象的,不能直接使用,特征被称为属性,行为被称为方法,类就是一个模板 什么是对象 对象是由类创建出来的一个具体存在,可以直接使用,通过哪个类创建出来的实例,就拥有哪个类中定义的特征和行为 类和对象的关系 类是模板,对象是根据类这个模板创建出来的,先有类,再有对

Python全栈开发【基础三】

Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 1 def 函数名(参数): 2 3 ... 4 函数体 5 ... 6 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 总结使用函数的好处: 1.减少代码重用 2.保持一致性,易维护

Python全栈开发

Python全栈开发 一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了. 一.装饰器 装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator),装饰器的功能非常强大,但是理解起来有些困难,因此我尽量用最简单的例子一步步的说明这个原理. 1.不带参数的装饰器 假设我定义了一个函数f,想要在不改变原来函数定义的情况下,在函数运行前打印出start,函数运行后打印出end,要实现这样一个功能该怎么实现?看下面如何用

Python全栈开发【基础二】

Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 1 class int(object): 2 """ 3 int(x=0) -> integer 4 int(x, base=10) -&g

Python全栈开发【基础四】

Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 匿名函数 lambda表达式:对于简单的函数,存在一种简便的表示方式,即lambda表达式 1 #这段代码 2 def calc(n): 3 return n**n 4 print(calc(10)) 5 6 #换成匿名函数 7 calc = lambda n:n**n 8 print(calc(10)) 匿名函数主要是和其它函数搭配使用 举例: 1 ########

Python全栈开发记录_第一篇

Python全栈开发记录只为记录全栈开发学习过程中一些难和重要的知识点,还有问题及课后题目,以供自己和他人共同查看.(代码行数:70行) 知识点1:优先级:not>and 短路原则:and:如果第一个条件的结论为假,那么 and 前后两个条件组成的表达式计算结果一定为假,后面的条件计算机不会进行计算 or:如果第一个条件的结论为真,那么or 前后两个条件组成的表达式计算结果一定为真,后面的条件计算机不会进行计算 知识点2:python区分大小写,常量需全部字母大写(默认这样写) python换行

Python 全栈开发【第一篇】:目录

Python 全栈开发[第0篇]:目录 第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基础语法入门 Python 全栈开发[第三篇]:数据类型.字符编码.文件操作 第二阶段:函数编程&常用标准库 Python 全栈开发[第四篇]:函数.递归.生成器.迭代器 Pyhton 全栈开发[第五篇]:常用模块学习 第三阶段:面向对象编程&网络编程基础 Python 全栈开发[第六篇]:面向对象

python全栈开发学习目录

python全栈开发学习目录 第一章 计算机基础 第二章Python入门 第三章数据类型 第四章文件操作 第五章函数 第六章 模块 第七章 面向对象 第八章 网络编程 第九章 并发编程 第十章 数据库 第十一章 前端开发-html 第十一章 前端开发-css 附加:js特效 15个小demo 第十一章 前端开发-JavaScript 第十一章 前端开发-jQuery 第十一章 前端开发-bootstrap 第十二章 Django框架开发 ... 原文地址:https://www.cnblogs.