С getattr
, конечно:
>>> class MyClass: pass
...
>>> my_object = MyClass()
>>> setattr(my_object, 'spaces are considered harmful', 42)
>>> getattr(my_object, 'spaces are considered harmful')
42
Или вы всегда можете получить доступ к пространству имен пользовательского класса (где вы не определили __slots__
), используя пространство имен напрямую:
>>> vars(my_object) is my_object.__dict__
True
>>> vars(my_object)
{'spaces are considered harmful': 42}
>>> my_object.__dict__
{'spaces are considered harmful': 42}
>>> vars(my_object)['spaces are considered harmful']
42
>>> my_object.__dict__['spaces are considered harmful']
42
Хотя на самом деле вместо пользовательского класса звучит так, будто вы хотите какой-то контейнер, который является своего рода отображением из строк в другие объекты.