如何在 Python 中继承属性

How to Inherit Attributes in Python

为什么它打印的是 0 而不是 24? 另外,如果我没有在系统 class 中显式定义 num ,为什么会出现错误,即使我在构造函数中这样做?

from abc import ABC, abstractmethod
class System(ABC):

    num = 0

    def __init__(self, input):
        self.num = input
        return

    @abstractmethod
    def getNum(self):
        pass

class FirstSystem(System):
    def __init__(self, input):
        super().__init__(input)
        return

    def getNum(self):
        return super().num

foo = FirstSystem(24)
print(foo.getNum())

尝试改变

def getNum(self):
    return super().num

def getNum(self):
    return self.num

看看是否有帮助:)

super()显式调用父class,用于访问被覆盖的方法和对象;即,与您想要的完全相反!正如 Capt. Trojan 指出的那样,self.num 将为您提供您期望的 num 的子 class 版本。

Here 是 class 何时以及何时不使用 super 的 ic 解释。