0

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

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属性吗?

4

1 回答 1

2

b并且d不相关;b完全是基类的一个单独实例。

如果要调用重写的初始化程序 ( __init__),请使用super()代理对象来访问它:

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

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

请注意,我在这里使用了 Python 3 特定的语法;super()没有参数在 Python 2 中不起作用,您还需要将其object用作类的父base类以使其成为新型类。

于 2013-10-24T19:21:55.100 回答