在派生类完全构造之前调用的派生方法

  • 本文关键字:派生 调用 方法 python
  • 更新时间 :
  • 英文 :


以下代码在调用multiply方法调用派生的multiply方法后打印30

class A:
def __init__(self):
self.multiply(15)
print(self.i)
def multiply(self, i):
self.i = 4 * i

class B(A):
def __init__(self):
super().__init__()
def multiply(self, i):
self.i = 2 * i

obj = B()

首先调用super().__init__(),然后由于multiply重写,因此调用派生的multiply方法。

如果对象甚至没有完全构造好(如果我们在基类的__init__方法中,那么我们甚至还没有完成基对象的构造,那么我们怎么可以调用派生方法呢(?

__new__返回后调用__init__;也就是说,obj = B()近似等于
obj = B.__new__(B)  # create the new object
obj.__init__()      # initialize it

通常,类不会覆盖__new__;它只是延迟到CCD_ 12。(即使它定义了__new__,也必须确保object.__new__最终被调用。(

最新更新