【发布时间】:2013-03-11 03:32:53
【问题描述】:
所以你有一些函数,比如Gtk.Builder.get_object(),它返回一些小部件。在我们的例子中是Gtk.Window()。
我有一个 Gtk.Window() 的子类,它添加了一些信号处理程序。
class Window(Gtk.Window):
是否可以使用Gtk.Builder.get_object()返回的小部件来构造Window()?我想应该是用__new__()什么的,但我想不通。
【问题讨论】:
-
你能写到你得到的
Gtk.Window实例的__class__属性吗? -
@Blckknght 那安全吗?我做了一个快速测试,我在
__new__()中设置了window.__class__ = cls。我似乎能够从子类中调用方法来执行此操作,但__init__仍然没有运行。根据我对文档的解释,它应该是 IDK。 -
只要你设置的类是实例上一个类的子类就应该是安全的。如果您从
__new__返回修改后的实例,我不确定为什么它不会调用__init__。我将把这个建议写出来作为答案,但在我们弄清楚出了什么问题之前不要接受它。
标签: inheritance constructor python-3.x pygobject