コードで GUI 構造を表現する必要がある Python プロジェクトに取り組んでいます。次のようになります。
- window1 (button1、button2、button3、dialog1 などを含む)
- window2 (button4、button5、dialog2、list1 などを含む)
そのため、それぞれが異なるコンテンツを持ち、さまざまな要素の背後にあるさまざまな機能を持つ多数のウィンドウがあります。各ウィンドウには、そこでのみ機能するさまざまなカスタム メソッドを含めることができます。
今、私には2つの可能性があります:
最初:
class Window1(object):
def __init__(self):
self.elements = {"button1":button1,"button2":button2,...}
def customMethod(self):
print "do custom"
class Window2(object):
def __init__(self):
self.elements = {"button4":button4,"button5":button5,...}
def otherCustomMethod(self):
print "do other custom"
...
window1 = Window1()
window2 = Window2()
しかし、これを行うと、各ウィンドウに 1 つずつ、多くのクラスが存在することになり、各ウィンドウのインスタンスが 1 つだけ必要になります。したがって、2 番目の可能性は、その場で適切なオブジェクトを作成することです。
# create template class
class WindowGeneric(object):
pass
# create first window
window1 = WindowGeneric()
window1.elements = {"button4":button4,"button5":button5,...}
def customMethod(self):
print "do custom"
window1.customMethod = customMethod.__get__(window1, WindowGeneric) #bind to instance
#create second window
window2 = WindowGeneric()
window2.elements = {"button4":button4,"button5":button5,...}
def otherCustomMethod(self):
print "do other custom"
window1.otherCustomMethod = otherCustomMethod.__get__(window2, WindowGeneric) #bind to instance
しかし、この解決策も、「ハッキング」のせいで見苦しく見えます。
オブジェクトの作成がすべてです。ウィンドウの要素は実行前に認識され、実行中に変更されることはありません。
これを行うためのより良い方法はありますか?
編集:少し明確にするために:私は多くの類似しているが同等ではないオブジェクトを作成したいだけです(それらは内部に異なるメソッドと変数を持つことができます)が、オブジェクトごとに新しいクラスを作成する方が良いかどうかわかりません(バージョン 1) またはダミー オブジェクトを作成し、後で個々の機能を追加してオブジェクトを作成する (バージョン 2)。