所以你有一些函数,比如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__和其他适当的方法。