簡體   English   中英

Python - 如何使用基礎 class 中的方法獲取派生 class 的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM