【问题标题】:PyGTK properties versus python propertiesPyGTK 属性与 python 属性
【发布时间】:2011-08-23 07:20:41
【问题描述】:
从 PyGTK 中的 GObject 类派生时,您可以像在 C 中一样使用 __gproperties__ dict 和 do_get_property/do_set_property 方法定义 GObject 属性,如Sub-classing GObject in Python 中所述。请注意,这是在我们在 Python 中使用 @property 装饰器之前编写的。
GObject 属性的优点是您可以连接到对象的notify::property-name 信号,以便在属性更改时接收通知。除此之外,还有什么好的理由使用 GObject 属性而不是 Python 的 @property 装饰器?
【问题讨论】:
标签:
python
properties
pygtk
gobject
【解决方案1】:
为什么不使用它们?使用simplified version 提供的
Python 绑定,定义 GObject 属性与
定义 Python 属性。
话虽如此,除了
通知。我过去使用的是财产
在 gtk.Builder 文件中设置。例如,在您的 UI 文件中,
<object class="GtkImage" id="image">
<property name="stock">gtk-missing-image</property>
</object>
在由 Image 对象构造时设置 stock 属性
生成器类;如果您在中使用 GObject 属性
您的自定义小部件,您也可以利用这一点。这种行为将是均匀的
property binding support in Glade 的出现更有用。
另一个潜在优势是 GObject 属性的最小/最大限制和
整数和浮点数的默认值,有时对
与 UI 相关的属性。
【解决方案2】:
除此之外,还有什么好的理由使用 GObject 属性而不是 Python 的 @property 装饰器?
不是真的。它们有很多样板,所以除非我需要 notify 信号,否则我会用 Python 编写我需要的任何东西。
话虽如此,我通常会认为“我不需要此属性的通知”,然后意识到“实际上,我根本不需要此属性。”