我需要在運行時動態設置類屬性。這怎麼能實現?我沒有辦法找到在實例init之外設置類屬性,這意味着每次創建實例時都會運行它。這隻需要發生一次(當類定義被加載時)。Python:如何動態定義類屬性的值?
修訂示例。
理想情況下,我需要做這樣的事情,但似乎這是不可能的:
# Note modules are python modules which extend the functionality of my reusable app.
class Test():
active_modules = Test.get_active_moduels()
@classmethod
def get_active_moduels(cls):
#logic for collecting installed modules
return installed
我能得到這份工作是這樣完成的,但它似乎愚蠢的,並導致重大問題。如果我在嘗試訪問active_modules
之前,Test類被實例化,我得到[]即使有active_modules。
# Note modules are python modules which extend the functionality of my reusable app.
class Test():
active_modules = []
def __init__ (self):
Test.get_active_moduels()
@classmethod
def get_active_moduels(cls):
if not cls.active_modules:
#logic for collecting installed modules
.....
cls.active_modules = installed_modules
else:
return cls.active_modules
我能得到這個通過創建active_modules
另一個註冊表做,但我認爲有一種方法在類中實現這一點......
我沒有在這裏看到任何子類... – wim 2014-11-25 00:01:50
無論如何,子類已經可以從'Test .__ subclasses __()',也許這可以幫助你 – wim 2014-11-25 00:03:49
不幸的是,問題是更復雜,然後我的例子帶領。我試圖創建一個'active_subs = Test.get_installed_subs()'的簡單需求,這就是我所追求的。 – arctelix 2014-11-25 00:09:38