簡體   English   中英

在子類的父級中訪問覆蓋的類變量

[英]Access overridden class variable in parent of subclass

如何訪問我希望替換子類的類變量?

這是我要實現的目標:

class Foo():
    var = "Foo"
    @staticmethod
    def print_var():
    print(Foo.var)

class Bar(Foo):
    var = "Bar"

>> Bar.print_var()
>> "Bar

上面的代碼顯示“ Foo”而不是“ Bar”

不要使用staticmethod 至少在這里使用@classmethod裝飾器

class Foo():
    var = "Foo"

    @classmethod
    def print_var(cls):
        print(cls.var)

class Bar(Foo):
    var = "Bar"

這使得在print_var可以訪問print_var ,但是傳遞了對當前類的引用,因此您可以在“正確的”對象上查找var

僅當要從方法中刪除所有上下文,然后再次將其轉換為常規函數時,才使用staticmethod

演示:

>>> class Foo():
...     var = "Foo"
...     @classmethod
...     def print_var(cls):
...         print(cls.var)
... 
>>> class Bar(Foo):
...     var = "Bar"
... 
>>> Bar.print_var()
Bar
>>> Foo.print_var()
Foo

使用classmethod

class Foo():
    @classmethod
    def print_var(cls):
        print(cls.var)

暫無
暫無

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

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