class Person()
def _init_(self, name):
self.name = name
print(“我是初始化对象属性”)
def _new_(cls, *args, **kwargs):
super()._new_(cls, *args, **kwargs):
print(“我是分配内存”)
del _del_(self):
print(“整个程序执行完之后,执行回收操作”)
del _call_(self, *args, **kwagrs):
print(“把对象当方法调用时,我就被调用了”)
def _repr_(self):
print(“我是__str__方法的备胎,它不在,我就顶上去”)
def _str_(self):
print(“我是正主,我来了,非指定情况下只执行我”)
p = Person() # 创建实例化对象时,__new__和__init__方法顺序触发
p1 = Person() # 创建实例化对象时,_new__和_init__方法顺序触发
p() # 此时 _call 方法被触发
Person()() # 此时 _call 方法被触发
print(a) # 此时 __str__方法被触发,如果没有则触发__repr__方法。都没有,挪用父级object的__str__方法,默认打印在object上的地址
print("%r"%p) # 手动调用__repr__方法
print("%s"%p) # 手动调用__str__方法
del p1 # 此处 del 只是一个关键字,手动删除 p1 变量
print(“hello world”)
while True:
pass
#·因为实例对象 p 是全局变量,以上程序都走完了,才会自动执行__del__方法。目前实例对象 p 依然未被回收
魔法方法magic method
猜你喜欢
转载自blog.csdn.net/A_xiansheng/article/details/94594287
今日推荐
周排行