簡體   English   中英

將實例變量添加到 Python 中的基類

[英]Adding an instance variable to a base class in Python

我有一個基類 A,由類 B 和 C 繼承,我試圖從中設置一個實例變量。 此類變量由基類 A 的方法使用,如下所示。

class A(object):
    def foo(self):
        print(self.value)

class B(A):
    value = "B"

class C(A):
    value = "C"

>>> b = B()
'B'
>>> c = C()
'C'

我知道函數foo只會在執行期間被評估,只要我不直接從A的實例調用foo可以了。 然而,我無法理解value = "B"value = "C"如何變成self.value = "B"self.value = "C"

對不起,如果這是天真的問題; 我已經遠離 python 有一段時間了,真的沒有見過像它這樣的東西。 我使用的是 Python 2.7.12 版。

不能在 Python 中將實例變量添加到基類,因為實例變量只能添加到實例,而不能添加到類。

在您的示例中,“值”是一個類變量。 在 Python 中,當沒有具有給定名稱的實例變量時,它會回退到具有該名稱的類變量。 但是,如果您為 b.value 分配了一個新值,則會在 b 上創建一個實例變量。 B.value 不會受到影響,就像 B 的任何新實例一樣。

我沒有找到該行為的權威參考,但這里有一篇關於它的文章。 https://www.toptal.com/python/python-class-attributes-an-overly-thorough-guide

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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