所以你有一些函数,比如Gtk.Builder.get_object()
,它会返回一些小部件。在我们的案例中是Gtk.Window()
。
我有一个Gtk.Window()
的子类,它添加了一些信号处理程序。
class Window(Gtk.Window):
是否可以使用Gtk.Builder.get_object()
返回的窗口小部件来构建Window()
?我认为应该使用__new__()
或其他东西,但我无法弄明白。
答案 0 :(得分:1)
我认为使用__new__
正是您想要做的。如果你可以设置你要进入子类的超类实例的__class__
属性,你应该全部设置。
以下是我认为您需要的内容:
class Window(Gtk.Window):
def __new__(cls, *args, **kwargs):
self = Gtk.Builder.get_object()
self.__class__ = cls
return self
Python应该检测到__new__
创建的值是类的实例(感谢__class__
值),然后它会调用__init__
和其他方法。