在Python中,如何在class语句中获得对当前class对象的引用?示例:def setup_class_members(cls, prefix):
setattr(cls, prefix+"_var1", "hello")
setattr(cls, prefix+"_var2", "goodbye")
class myclass(object):
setup_class_members(cls, "coffee") # How to get "cls"?
def mytest(self):
print(self.coffee_var1)
print(self.coffee_var2)
x = myclass()
x.mytest()
>>> hello
>>> goodbye
我已经取消的备选方案是:使用locals():这将在类语句中给出一个dict,可以写入该dict。这似乎适用于类,但是文档告诉您不要这样做。(如果有人能向我保证这将在一段时间内继续有效,我可能会倾向于使用此替代方案。)
在class语句之后向class对象添加成员:我的实际应用程序是派生一个具有动态创建的pyqtProperty类属性的PyQt4QWidget类。QWidget不寻常之处在于它有一个自定义元类。非常粗略地说,元类编译了pyqtProperties的列表,并将其作为附加成员存储。因此,在创建后添加到类中的属性没有效果。一个解决这个问题的例子:
^{pr2}$
请注意,上面的例子适用于大多数编程案例;我的案例恰好是其中一个不寻常的角落案例。在