我想使用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"))
但这是行不通的.第一种情况是返回属性的值,第二种情况是返回属性,即< 0xbb1aa0>的属性对象.我应该如何定义它才能起作用?
解决方法:
就像我要说的那样,不同之处在于,在第一个版本中,您将classes属性等更改为property的结果,而在第二个版本中,将其设置为实例的属性(这是不同的!).
这个版本怎么样:
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"))