了解PyQt4中的pyqtProperty

时间:2011-03-07 17:01:35

标签: python properties pyqt

我编写了以下小脚本来了解属性。我无法理解的一件事是,我的班级metaObject()的{​​{1}}现在包含名为A的属性。它是如何获得这些信息的?在我的类中,它仅用作设置属性的调用的目标变量的名称。怎么能实现呢?它也可以用普通的Python实现,即没有C API吗?

conf_name

1 个答案:

答案 0 :(得分:0)

如果这不应该是您的对象类的属性,它属于该类__init__函数。你有什么是一个类属性,它将被子类化它的那个对象类型的所有对象继承。

这实际上非常有用。例如:

for PyQt4.QtCore import QThread
class My_Thread(QThread):
  all_instances = []
  def __del__(self, *args, **kwargs):
    all_instances.remove(self)
    QThread.__del__(self, *args, **kwargs)
  def __init__(self, *args, **kwargs):
    QThread.__init__(self, *args, **kwargs)
    my_locally_scoped_variable = None
    self.all_instances.append(self)

这个类创建了一个QThread的子类,它与其确切的接口匹配,除非我创建thread = My_Thread(blahblahblah),我可以得到这个类型的所有其他线程的列表,以及通过查询{{1 },甚至thread.all_instances。然而,您可以处理对象删除,否则您的类的每个项目将始终存在引用,因此永远不会被垃圾回收。

另请注意,thread.all_instances[-1].all_instances仅存在于my_locally_scoped_variable的范围内,并且不会创建属性。