python - 如何在字符串中创建其名称的属性?

标签 python properties setattr

使用 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> .我应该如何定义它才能发挥作用?

最佳答案

正如我要说的那样,不同之处在于,在第一个版本中,您将类属性 blah 更改为属性的结果,而在第二个版本中,您将其设置为实例(这是不同的!)。

这个版本怎么样:

setattr(MyClass, "blah", property(self.get_blah, self.set_blah,
        self.del_blah, "bleh blih"))

你也可以这样做:

setattr(type(self), "blah", property(self.get_blah, self.set_blah,
        self.del_blah, "bleh blih"))

关于python - 如何在字符串中创建其名称的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212434/

相关文章:

python - 由于非浮点 NaN 值,替换 DataFrame 中的 NaN 不起作用

python - snakemake:规则的可选输入

java - `Properties` 是否仍用于从文件加载 JDBC 配置?

ios - 为什么将属性设置为 nil 会导致数组与数据重叠

python - exec 将函数添加到类中

python - 查找字符串中所有出现的可变时间戳结构

python - 多重继承/虚函数

spring - 配置配置文件特定的 spring-cloud-consul 属性

python - 需要一种将元信息/类添加到 python 列表/元组变量的简单方法吗?

python - 如何对以编程方式设置的属性调用方法?