我想從一個(gè)類方法中調(diào)用一個(gè)變量到同一個(gè)類中的不同方法:class A(): @classmethod def b(cls): cls.g = 5 def c(self): if self.g < 1: print("TestA") else: print("TestB")做的時(shí)候:x = A()x.c()我得到:AttributeError: 'A' object has no attribute 'g'我已經(jīng)閱讀并搜索了一個(gè)類似的案例,但沒有找到。大多數(shù)處理從 init 方法調(diào)用變量,這在這里不適用。
2 回答

FFIVE
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果你不.b()
事先運(yùn)行,你的.g
就不存在,......根本沒有。
__init__
向您的類添加一個(gè)函數(shù)并.g
在那里聲明以確保它至少存在。

牛魔王的故事
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
您沒有定義g
為類的類屬性A
。這可以通過這種方式完成:
class A(): g = 7
但是在您的代碼中,您同時(shí)將其g
視為實(shí)例 ( self.g
) 和類變量 ( cls.g
)。雖然這有效(self.g
將參考cls.g
),但可能會(huì)令人困惑。
添加回答
舉報(bào)
0/150
提交
取消