怎么样把第一页PPT设为模板相关信息圆柱钢模板优势是什么?企业网站建设模板和定制化有什么区别呢?,h5小游戏制作,哪个网站做的系统好,wordpress自动加载在看 python 源码的过程中我们会经常看到一些特殊方法#xff0c;也就是双下划线方法。其实双下划线方法是特殊方法#xff0c;是由 python 解释器提供的具有特殊意义的方法#xff0c;主要是 python 源码程序员使用的#xff0c;我们在开发中尽量不要使用双下方法#xf… 在看 python 源码的过程中我们会经常看到一些特殊方法也就是双下划线方法。其实双下划线方法是特殊方法是由 python 解释器提供的具有特殊意义的方法主要是 python 源码程序员使用的我们在开发中尽量不要使用双下方法但是深入研究双下划线方法更有益于我们阅读源码。 今天我们就来看看常用的双下划线方法到底是干什么的。 前言 __init_() 1、代码演示class Demo: def __init__(self, name, age): self.name name self.age age print(姓名,self.name) print(年龄,self.age)
if __name__ __main__: cl Demo(狗子, 22)输出姓名狗子年龄222、总结 1、触发方式类实例化的时候自动调用。 2、作用,用于创建实例属性。 __new__() 1、代码演示class Demo: def __init__(self): print(如果不在__new__方法里面调object的__new__方法就不会创建对象__init__不会被执行) print(如果不在__new__方法里面调return创建好的对象__init__不会被执行) def __new__(cls, *args, **kwargs): print(__new__方法通过调用object类的__new__方法创建对象再把对象传递给__init__方法) return super().__new__(cls,*args,**kwargs)if __name__ __main__: cl Demo()输出__new__方法通过调用object类的__new__方法创建对象再把对象传递给__init__方法如果不在__new__方法里面调object的__new__方法就不会创建对象__init__不会被执行如果不在__new__方法里面调return创建好的对象__init__不会被执行2、总结 1、触发方式实例化类的时候自动调用。 2、作用创建类实例。 2、__new__()方法执行顺序在__init()之前。 3、如果不在__new__方法里面调object的__new__方法就不会创建对象__init__不会被执行。 4、如果不在__new__方法里面调return创建好的对象__init__不会被执行。 _call__() 1、代码演示class Demo: def __init__(self): print(初始化方法在类实例化的时候执行) def __call__(self): print(将类实例当做函数调用的时候触发__call__方法)if __name__ __main__: cl Demo() cl()输出初始化方法在类实例化的时候执行将类实例当做函数调用的时候触发__call__方法2、总结 1、触发方式将类实例像调函数一样调用的时候自动调用。 2、作用让类实例可以像调函数一样调用。 3、构造方法__new__的执行是由创建对象触发的即对象 类名() 。 4、对于 __call__ 方法的执行是由对象后加括号触发的即对象() 或者 类()() __len__( 1、代码演示class Demo: def __init__(self, name, age): self.name name self.age agedef __len__(self): return len(self.__dict__)
if __name__ __main__: cl Demo(狗子, 22) print(len(cl))输出22、总结 1、触发方式调用len()函数的时候自动化调用。 2、作用计算对象的长度。 __del__() 1、代码演示
class Demo: def __del__(self): print(你别过来我怕猪......)if __name__ __main__: cl Demo()2、总结 1、触发方式对象在内存中被释放时自动触发执行。 2、此方法一般无须定义因为Python是一门高级语言程序员在使用时无需关心内存的分配和释放因为此工作都是交给Python解释器来执行所以__del__()的调用是由解释器在进行垃圾回收时自动触发执行的。 __str__() 1、代码演示class Demo: def __init__(self): pass def __str__(self): print(操作类实例的时候自动化调用__str__) return seccessif __name__ __main__: cl Demo() print(cl)输出操作类实例的时候自动化调用__str__seccess2、总结 1、触发方式操作类实例的时候自动调用。 2、作用用于操作类实例的时候返回指定的数据。 __repr__() 1、代码演示class Demo: def __repr__(self): return 与__str__功能一样if __name__ __main__: cl Demo() print(cl)输出与__str__功能一样2、代码演示class Demo: def __str__(self): return 当同一个类中__str__与__repr__同时存在__str__优先级高于__repr__ def __repr__(self): return 与__str__功能类似if __name__ __main__: cl Demo() print(cl)输出当同一个类中__str__与__repr__同时存在__str__优先级高于__repr__3、总结 1、触发方式操作类实例的时候自动调用。 2、作用与__str__()类似 3、当同一个类中__str__与__repr__同时存在__str__优先级高于__repr__。 __eq__() 1、代码演示class Demo: def __init__(self): self.num1 10 self.num2 20 def __eq__(self,obj): print(self.num1) print(obj.num2) return self.num1 obj.num2if __name__ __main__: clA Demo() clB Demo() print(clA clB )输出1020False2、总结 1、触发方式调用相等判断的时候自动调用。 2、作用用于数据相等判断 __hash__() 1、代码演示class Demo: def __init__(self,name,age): self.name str(name) self.age str(age) def __hash__(self): return hash(self.nameself.age)if __name__ __main__: cl Demo(狗子,20) print(hash(cl))输出19359479268780972682、总结 1、触发方式调用hash()方法时自动调用 2、作用计算哈希值 3、只有不可变数据类型才有哈希值。 __getitem__() 1、代码演示class Demo: def __init__(self,name): self.namename def __getitem__(self, item): print(执行obj[key]获取实例属性的时候触发__getitem__方法) return self.__dict__[item]
if __name__ __main__: cl Demo(狗子) print(cl[name])输出执行obj[key]获取实例属性的时候触发__getitem__方法狗子2、总结 1、触发方式执行obj[key]获取实例属性的时候自动调用。 2、作用用于返回属性值。 __setitem__() 1、代码演示class Demo: def __init__(self,name): self.namename def __setitem__(self, key, value): print(执行obj[key]value的时候触发__setitem__方法) self.__dict__[key]valueif __name__ __main__: cl Demo(狗子) cl[age] 20 print(cl.__dict__)输出执行obj[key]value的时候触发__setitem__方法{name: 狗子, age: 20}2、总结 1、触发方式执行obj[key]value的时候自动调用。 2、作用用于设置对象属性。 __delitem__() 1、代码演示class Demo: def __init__(self,name): self.namename def __setitem__(self, key, value): print(执行obj[key]value的时候触发__setitem__方法) self.__dict__[key]value\def __delitem__(self, key): print(执行 del obj[key]时触发__delitem__) self.__dict__.pop(key)if __name__ __main__: cl Demo(狗子) cl[age] 20 print(cl.__dict__) del cl[age] print(cl.__dict__)输出执行obj[key]value的时候触发__setitem__方法{name: 狗子, age: 20}执行 del obj[key]时触发__delitem__{name: 狗子}2、总结 1、触发方式执行del obj[key]时自动调用。 2、作用用于删除对象属性。 __delitem__() 1、代码演示class Demo: def __init__(self,name): self.namename def __setitem__(self, key, value): print(执行obj[key]value的时候触发__setitem__方法) self.__dict__[key]value def __delattr__(self, item): print(执行 del obj.key时候执行__delattr__) self.__dict__.pop(item)if __name__ __main__: cl Demo(狗子) cl[age] 20 print(cl.__dict__) del cl.age print(cl.__dict__)2、总结 1、触发方式,执行del obj.key时候自动调用 2、作用用于删除对象属性。