Python - 如何使用基 class 中的方法获取派生 class 的属性

Python - How to get an attribute of a derived class using a method in the base class

假设我有一只狗 class 继承自动物 class。我希望每个 Animal 都能发出某种声音,并且我希望能够使用一种方法访问这种声音,而不管该动物的实例是否存在。

这基本上就是我想要的:(当我尝试 运行 时得到 NameError: name 'noise' is not defined

class Animal:
    noise = ''
    def get_noise():
        return noise

class Dog(Animal):
    noise = 'Woof!'

Dog.get_noise()

我知道我可以调用 Dog.noise 来做同样的事情,但我想知道如何使用一种方法来做这件事(如果可能的话)。我也知道我可以在 Dog 和 return Dog.noise 中创建一个 get_noise 方法,但是为每种类型的动物创建这个方法而不是仅仅从Animal class.

感谢任何帮助!

你想要:

@classmethod
def get_noise(cls):
    return cls.noise

您需要 classmethod 才能正确地从实例和 classes 中调用该方法,并且它还可以方便地传入当前的 class,您可以从中访问 .noise属性。

以下对我有用。

class Animal:
    noise = 'Noise'

    def get_noise(self):
        return self.noise


class Dog(Animal):
    noise = 'Woof!'


dog = Dog()
dog.get_noise()