1

Gtk.Builder.get_object()したがって、ウィジェットを返す関数、たとえばがあります。私たちの場合、Gtk.Window().

Gtk.Window()いくつかのシグナルハンドラを追加するサブクラスがあります。

class Window(Gtk.Window):

によって返されたウィジェットを使用しGtk.Builder.get_object()て構築することは可能Window()ですか? __new__()何かを使うべきだと思いますが、わかりません。

4

1 に答える 1

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__

于 2013-03-11T04:54:36.363 に答える