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()
假设我有一只狗 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()