了解Python继承和super()

问题描述 投票:-2回答:1
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,并从派生类中调用基类的函数以打印出相同的内容?

python python-3.x inheritance super self
1个回答
0
投票

关于您的第一个问题:super().__init__(10)调用DB.__init__,这将显式设置self.A = 10。在第二行中打印该值后,使用self.A = 50显式change值。

由于objD的实例,因此,无论您要调用self还是D中定义的函数,在此示例中D始终是DB的实例。没有两个单独的实例属性A,每个类一个。实例本身只有一个属性。

© www.soinside.com 2019 - 2024. All rights reserved.