1. __init__和__delete__
__init__()
函数的意义等同于类的构造器(同理,__del__()
等同于类的析构函数)。因此,__init__()
方法的作用是创建一个类的实例。
2. __call__
__call__()
的作用是使实例能够像函数一样被调用,同时不影响实例本身的生命周期(__call__()
不影响一个实例的构造和析构)。但是__call__()
可以用来改变实例的内部成员的值。
3. __new__
__new__方法的调用是发生在__init__之前的, __new__发生在实例化之前,__init__初始化发在实例化之后 所以可以用__new__简单实现单例。
#用__new__实现单例
class Singleton(object):
def __new__(cls):
if not hasattr(cls,'instance'):
cls.instance = super().__new__(cls)
return cls.instance
obj1 = Singleton()
obj2 = Singleton()
print(obj1==obj2) #True
4. __str__
__str__是被print函数调用的,一般都是return一个字符串。当打印一个类的时候,那么print首先调用的就是类里面的定义的__str__
class A:
def __str__(self):
return " print me! "