- __del__该方法,又称分析方法。当对象未被引用时,垃圾回收器将被调用__del__销毁对象的方法
class Student: def __del__(self): print({}.format(self)) s1=Student() s2=Student() del s2 print(程序结束)
运行结果: <.Student object at 0x0000029A6D69A760>被销毁 程序结束 <.Student object at 0x0000029A6D69A160>被销毁 分析步骤:del s2先删除了s对象,后面操作print,程序结束,s1不引用,直接通过垃圾回收器调用__del__方法来使得s1被销毁。
ps:假如还不懂,再看一个例子,如下:
class Student: def __del__(self): print({}.format(self)) s1=Student() s2=Student() print(程序结束)
运行结果: 程序结束 <.Student object at 0x0000022451FDA160>被销毁 <.Student object at 0x0000022451FDA760>被销毁 分析步骤:先操作print,程序结束,s1、s均未引用,依次销毁
- __call__方法:使对象像函数一样被调用
class SalaryAccount: def __init__(self,monthSa): self.montSa=monthSa def __call__(self, monthSalary): print(算工资) yearSalary=monthSalary*12 return dict(yearSalary=yearSalary) s=SalaryAccount(5000) print(s(5000)) #这里s(5000)实际上是调用了__call__方法
print('年工资为:{}'.format(s.montSa*12))
运行结果: 算工资啦 {‘yearSalary’: 60000} 年工资为:60000
ps:函数的调用
def SalaryAccount(a):
return a*12
print(SalaryAccount(5000))
运行结果: 60000