所以你有一些函数,比如Gtk.Builder.get_object()
,它返回一些小部件。在我们的例子中 a Gtk.Window()
。
我有一个子类,Gtk.Window()
它添加了一些信号处理程序。
class Window(Gtk.Window):
是否可以使用返回的小部件Gtk.Builder.get_object()
来构造Window()
?我认为它应该正在使用__new__()
或其他东西,但我无法弄清楚。
所以你有一些函数,比如Gtk.Builder.get_object()
,它返回一些小部件。在我们的例子中 a Gtk.Window()
。
我有一个子类,Gtk.Window()
它添加了一些信号处理程序。
class Window(Gtk.Window):
是否可以使用返回的小部件Gtk.Builder.get_object()
来构造Window()
?我认为它应该正在使用__new__()
或其他东西,但我无法弄清楚。
我认为使用__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__
和其他适当的方法。