У меня есть набор классов, которые я хотел бы иметь возможность динамически инициализировать из dict.
class A(object):
var = 1
class B(object):
val = 2
class C(object):
var = 1
val = 3
BASE = {'a': A, 'b': B, 'c': C}
Я мог бы использовать их в некоторых динамических функциях, таких как
def create_and_obtain(kind, **kwargs):
base = BASE[kind]()
for kwarg in kwargs.keys():
print(getattr(base, kwarg))
>>> create_and_obtain('c', var=None, val=None)
1
3
Если у меня есть много классов, которые время от времени добавляются, изменяются и удаляются, я должен следить за тем, чтобы мой BASE
обновлялся.Есть ли способ динамического построения BASE
в соответствии с заявленными классами в скрипте?Могут ли сами классы иметь какие-либо добавленные meta_attributes, которые можно использовать для расширения определения BASE
за пределы этого упрощенного примера?
Например, можно ли добавить некоторые метатеги, например:
class A(object):
...
_meta_dict_key_ = 'apples'
class B(object):
...
_meta_dict_key_ = 'bananas'
class C(object):
...
_meta_dict_key_ = 'coconuts'
так что BASE
динамически построен как:
BASE = {'apples': A, 'bananas': B, 'coconuts':C}