[英]Python - How to get an attribute of a derived class using a method in the base class
假設我有一只從動物 class 繼承的狗 class。 我希望每只動物都發出某種噪音,並且我希望能夠使用一種方法來訪問這種噪音,而不管動物的實例是否存在。
這基本上就是我想要的:(我得到NameError: name 'noise' is not defined
when I try to run it)
class Animal:
noise = ''
def get_noise():
return noise
class Dog(Animal):
noise = 'Woof!'
Dog.get_noise()
我知道我可以調用Dog.noise
來做同樣的事情,但如果可能的話,我想知道如何使用一種方法來做到這一點。 我也知道我可以在Dog
中創建一個get_noise
方法並返回Dog.noise
,但為每種類型的動物創建此方法而不是僅從Animal
class 繼承似乎並不優雅。
任何幫助表示贊賞!
你要:
@classmethod
def get_noise(cls):
return cls.noise
您需要classmethod
以正確地使該方法可以從實例和類中調用,並且它還可以方便地傳入當前 class ,您可以從中訪問.noise
屬性。
以下對我有用。
class Animal:
noise = 'Noise'
def get_noise(self):
return self.noise
class Dog(Animal):
noise = 'Woof!'
dog = Dog()
dog.get_noise()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.