深圳大学网站建设,wordpress 图片中文名称转为时间,冬季去黄山旅游攻略,免备案手机网站__名字__ 类中的特殊方法\内置方法 双下方法 魔术方法 magic_method 类中的每一个双下方法都有它自己的特殊意义 1.__call__ 相当于 对象() class A:def __call__(self, *args, **kwargs):print(执行call方法了)
a A()
a() # 对象() 相当于调用__call__方法
A()()…__名字__ 类中的特殊方法\内置方法 双下方法 魔术方法 magic_method 类中的每一个双下方法都有它自己的特殊意义 1.__call__ 相当于 对象() class A:def __call__(self, *args, **kwargs):print(执行call方法了)
a A()
a() # 对象() 相当于调用__call__方法
A()()#相当于先实例化得到一个对象,再对对象(),和上面的结果一样,相当于调用__call__方法
结果:
执行call方法了
执行call方法了 class A:def __call__(self, *args, **kwargs):print(执行call方法了)def call(self):print(执行call方法了)
class B:def __init__(self,cls):print(在实例化A之前做一些事情)self.a cls()self.a()print(在实例化A之后做一些事情)
B(A)
在实例化A之前做一些事情
执行call方法了
在实例化A之后做一些事情 2.__len__ 相当于len(obj) 内置函数和类的内置方法是有联系的 class mylist:def __init__(self):self.lst [1,2,3,4,5,6]self.name alexself.age 83def __len__(self):print(执行__len__了)return len(self.__dict__)
l mylist()
print(len(l))结果:3 class mylist:def __init__(self):self.lst [1,2,3,4,5,6]self.name alexself.age 83def __len__(self):print(执行__len__了)return len(self.lst)
l mylist()
print(len(l))结果:6 len(obj)相当于调用了这个obj的__len__方法 __len__方法return的值就是len函数的返回值 如果一个obj对象没有__len__方法,那么len函数会报错 3.__new__ 特别重要 开辟内存空间的 类的构造方法 单例类 class Single:__ISINCTANCE Nonedef __new__(cls, *args, **kwargs):if not cls.__ISINCTANCE:cls.__ISINCTANCE object.__new__(cls)return cls.__ISINCTANCEdef __init__(self,name,age):self.name nameself.age ages1 Single(aaaa,83)
s2 Single(bbbb,40)
print(s1.name)
print(s2.name)
结果:
bbbb
bbbb 4.__str__ str(obj), %s % obj, print(obj) class Student:def __str__(self):return %s %s %s%(self.school,self.cls,self.name)def __init__(self,name,stu_cls):self.school oldboyself.name nameself.cls stu_cls
a Student(asd,55)
print(a)
q Student(qwe,66)
print(q)
print(str(a)) # 内置的数据类型,内置的类,相当于执行__str__
print(学生1 : %s%a)oldboy 55 asd
oldboy 66 qwe
oldboy 55 asd
学生1 : oldboy 55 asd 转载于:https://www.cnblogs.com/chenyibai/articles/9392953.html