首页>Python>如何创建一个属性,其名称在一个字符串?

我想使用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"))
上一篇:反射


下一篇:puppeteer的使用,网页转长图和pdf