Python:类数据的继承(如果已经初始化了超类对象)

时间:2013-10-24 19:18:06

标签: python oop inheritance

我面临无法继承超类属性值的问题。我已经调用了超类构造函数,现在尝试检查继承的值。

class base:
    def __init__(self, x):
        self.x = x
        print(self.x)

class derive(base):
    def __init__(self):
        print(self.x + 1)


print("base class: ")
b = base(1)                           <-- Creating superclass instance 
print("derive class: ")
d = derived()                         <-- Inheriting. Failure.

为什么我不能这样做?我是否应该明确地将底层对象传递给继承对象以获取 x 属性?

1 个答案:

答案 0 :(得分:2)

bd无关; b完全是基类的单独的实例。

如果要调用重写的初始值设定项(__init__),请使用super() proxy object访问它:

class derive(base):
    def __init__(self):
        super().__init__(1)
        print(self.x + 1)

请注意,您仍需要将参数传递给父类的初始值设定项。在上面的示例中,我为父初始值设定项的x参数传递一个常量值。

请注意,我在这里使用了Python 3特定的语法;没有参数的super()在Python 2中不起作用,在这里你还需要使用object作为base类的父级来使它成为一个新式的类。