有沒有一種方法可以訪問類變量而不顯式使用類名,以防萬一我決定稍後更改類的名稱?使用類名訪問靜態變量
像這樣的事情
static_variable = 'stuff'
className = CLASS
def method (self):
className.static_variable
這是可能以簡單的方式?
回答
self.static_variable 或 __CLASS __。static_variable
有沒有一種方法可以訪問類變量而不顯式使用類名,以防萬一我決定稍後更改類的名稱?使用類名訪問靜態變量
像這樣的事情
static_variable = 'stuff'
className = CLASS
def method (self):
className.static_variable
這是可能以簡單的方式?
回答
self.static_variable 或 __CLASS __。static_variable
任何人尋找一個答案,無論對當下是否混合靜態和實例變量是一個好主意。
有兩種簡單的方法可以解決這個問題。
首先方式
class MyClass():
static_variable = 'VARIABLE'
def __init__(self):
self.instanceVariable = 'test'
def access_static(self):
print(__class__.static_variable)
方式二
class MyClass():
static_variable = 'VARIABLE'
def __init__(self):
self.instanceVariable = 'test'
def access_static(self):
print(self.static_variable)
一個實例變量可使用類.static_variable,或使用 self.static_variable只要一個實例來訪問變量尚未在代碼中的self.static_variable中定義。
採用自主將使曖昧是否你雖然訪問靜態變量或實例變量,所以我首選做這件事的方式是簡單地在前面加上static_variable與_class_而不是ClassName.static_variable
你不是隻是在做'self.TABLE'嗎? – user2357112
或'__class __。TABLE',如果你打算依賴魔術'__class__'閉包變量呢? – user2357112
作爲一個重要的規則:在你的類內部你不需要知道類的名字(一個例外:在python-2.x中的'super',也許在'__repr__'或'__str__'中)。每當你發現你需要你班級的名字時,可能會有更好/更簡單的方法。 – MSeifert