class TT: def __init__(self): print "__init__" def __call__(self): print "__call__" def __str__(self): return "__str__" def __int__(self): return "__int__" def __add__(self,other): return "__add__" def __sub__(self,other): return "__sub__" def __mul__(self,other): return "__mul__" def __div__(self,other): return "__div__" def __del__(self): print "析构函数被调用"
在Python中,定义一个类TT如上,那么
- 执行 obj = TT()方法,将自动调用TT中的 __init__ 方法
- 在执行obj() 或者TT()(),即类成员后加括号方式调用,则会自动调用 __call__ 方法
- 如果要将对象转换为int类型,即ret = int(obj)则会自动调用类的 __int__ 方法,并将返回值赋值给左边变量
- 同样如果需要将对象转换为str类型,即ret = str(obj)则会自动调用类的 __str__方法,并将返回值赋值给左边变量
- 调用print(obj)方法,等同于调用print(str(obj))方法,最终也会调用到类的 __str__方法
- 两个对象相加时候,则会自动调用第一个对象的 __add__方法,并将第一个个对象当做参数传入这个方法中,同理还有 __sub__、__mul__、__div__
- 析构函数,即__del__,在对象销毁的时候自动调用
- obj.__dict__,会将obj对象中的成员以词典方式展示出来;TT.__dict__会将类中的成员以词典方式展示出来
如下所示:
obj = TT() # __init__ obj() # __call__ print(int(obj)) # __int__ print(str(obj)) # __str__ print(obj) # __str__ print(obj+50) # __add__ print(obj-50) # __sub__ print(obj*50) # __mul__ print(obj/50) # __div__ del obj # 析构函数被调用
原文地址:https://www.cnblogs.com/shiju/p/9519032.html
时间: 2024-10-29 03:22:35