Использование Python Я хочу создать свойство в классе, но имея его имя в строке. Обычно вы делаете:Как создать свойство с его именем в строке?
blah = property(get_blah, set_blah, del_blah, "bleh blih")
где get_, set_ и del_blah определены соответственно. Я попытался сделать то же самое с именем свойства в переменной, например:
setattr(self, "blah", property(self.get_blah, self.set_blah, self.del_blah, "bleh blih"))
Но это не работает. Первый случай blah возвращает значение свойства, во втором случае он возвращает свойство, то есть <property object at 0xbb1aa0>
. Как я могу определить его так, чтобы он работал?
Обычно мы определяем свойство с фиксированным, очевидным, инвариантным именем. Затем мы используем getattr для гибкого сопоставления свойств. Что вы пытаетесь сделать с этим? Какая картина? Вероятно, есть более простой способ; пожалуйста, предоставьте фон, чтобы мы могли предложить что-то, что действительно сработает. –
Я создаю класс для хранения конфигурации процесса, и у него будет тонна свойств, очень похожих на то, как они установлены, получают, проверяются, документируются и т. Д. Я пытаюсь удалить дублирование кода. – Pablo
@J. Пабло Фернандес: Пожалуйста, обновите свой вопрос. Комментарии не являются местом для размещения важной информации. Похоже, вы просто говорите о классе, который обертывает словарь значений свойств. Но вам нужно предоставить некоторые сведения о вашем случае использования. Больше, чем вы можете вставить в комментарий. Это ваш вопрос; обновите его, пожалуйста. –