簡體   English   中英

更改 class 之外的 class 屬性值

[英]Change the class attribute value outside the class

我有一個這樣的圖書館:

class Robot:
    __counter = 0

    @classmethod
    def get_c(cls):
        result = cls.__counter + 1
        return result

我正在嘗試通過初始化 class 屬性 __counter = 1 來訪問此 class,因此我可以從 get_c() function 獲得 2。 這就是我所做的:

Robot.__counter = 1
x = Robot()
x.get_c()

為什么結果仍然是 1 以及在內部不接觸 class 的情況下做我想做的事情的解決方案是什么謝謝!

您使用了雙下划線 name-mangling 每次你這樣做時都會翻譯:

__some_var

在 class 內部定義為:

_MyClass__some_var

這就是重點——避免子類中的名稱沖突。

如果您想像這樣在 class 之外訪問它,請不要使用雙下划線名稱修飾。

我不確定“內部不接觸 class”是什么意思,但在這種情況下:

Robot._Robot__counter = 1

起作用,盡管執行上述操作表明您不應該使用雙下划線名稱修飾。

順便說一句,這並不等同於具有訪問修飾符的語言中的“私有”,盡管它對於有限的用例具有相同的目的,防止子類中的意外名稱沖突。

暫無
暫無

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

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