Я пытаюсь динамически назначить атрибуты класса существующему пользовательскому классу. Эти атрибуты имеют индивидуальные методы Getter и Setter, определенные в цикле во всех атрибутах, которые будут созданы, и присваиваются с помощью setattr () в цикле. Пожалуйста, смотрите код ниже. Принимая во внимание, что если я использую setattr () в операторе eval () , он работает правильно, то есть каждый атрибут, указывающий на его собственное значение. Может ли кто -нибудь умнее меня, пожалуйста, дать официальное объяснение о том, что происходит и есть ли более чистое решение, чем использование eval () ?
for attr in attr_list:
def getter(self):
return getattr(self, attr)
def setter(self, value):
setattr(self, attr, value)
# DOES NOT WORK
setattr(self.__class__, attr, property(getter, setter))
# WORKS
eval(f'setattr(self.__class__, \'{attr}\', property(lambda self: getattr(self, \'{attr}\'), lambda self, value: setattr(self, {attr}, value)))')
Подробнее здесь: https://stackoverflow.com/questions/796 ... p-in-pytho
Динамически добавленные атрибуты класса с методами Getter/Setter в цикле Python ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Динамически добавленные атрибуты класса с методами Getter/Setter в цикле Python
Anonymous » » в форуме Python - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-