class DB:
def __init__(self,val):
self.A = val
def fun1(self):
print("Fun 1 Class DB",self.A)
class D(DB):
def __init__(self):
super(D,self).__init__(10)
print("Constructor D ",self.A)
self.A=50
def fun1(self):
print("Fun 1 Class D",self.A)
def fun2(self):
super().fun1()
obj=D()
obj.fun1()
obj.fun2()
[D类构造函数中的print self.A如何打印10?self.A如何替换为fun2?
我如何将值(例如上例中的10)传递给基类,并在那儿将其初始化为变量A,并从派生类中调用基类的函数以打印出相同的内容?
关于您的第一个问题:super().__init__(10)
调用DB.__init__
,这将显式设置self.A = 10
。在第二行中打印该值后,使用self.A = 50
显式change值。
由于obj
是D
的实例,因此,无论您要调用self
还是D
中定义的函数,在此示例中D
始终是DB
的实例。没有两个单独的实例属性A
,每个类一个。实例本身只有一个属性。