1.__call__
这是一个可以把对象变成函数的方法
class A(): def __call__(self, *args, **kwargs): ic("__call__") # 实例化对象 a = A() # 对象就像函数一样调用 a("aa") # == a.__call__()
View Code
2.__new__ 和 __init__的爱恨情仇
new是在 实例化之前执行,必须返回 A()
init是在 实例化之后,A()会执行此方法
总结:先new 再init ;(前提是new有返回值)
a = A()可以理解为:
a = A类里面的new方法的返回值。
class A(): def __init__(self): ic("init") def __new__(cls, *args, **kwargs): ic("new") return super(A,cls).__new__(cls) # 实例化对象 a = A()