我需要在运行时动态设置类属性。这怎么能实现?我没有办法找到在实例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