Мне нужно установить атрибут класса динамически во время выполнения. Как это можно достичь? Я не нашел способ установить атрибут класса вне экземпляра 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, я получу [], хотя есть активные_модули.
# 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
В любом случае подклассы уже доступны из 'Test .__ подкласса __()', возможно, это может помочь вам – wim
, к сожалению, проблема более сложная, чем мой пример. Я попытался создать простое требование для 'active_subs = Test.get_installed_subs()' это то, что я получаю. – arctelix