私はPython(3)でゲームを作成しています。メインループにはゲームループとその中に変数があります。私はこの "path"オブジェクトを作成するためのサブクラスを持って、私はメインクラスから変数が必要です。また、メインのスーパークラスからサブクラスを呼び出す必要があります。サブクラスを呼び出すたびに、メインクラスのinitメソッドを呼び出して変数を渡します。この問題が発生すると、メインクラスのすべての変数の値がリセットされます。SuperclassからSubclassオブジェクトを呼び出すにはどうすればよいですか? (Python 3)
class Main:
def __init__(self):
foo = 0
sub1 = Sub()
def foo_edit(self):
self.foo += 5
def main(self):
sub2 = Sub()
class Sub(Main):
def __init__(self):
super(Sub, self).__init__()
self.bar = 0
def foo_edit(self):
self.foo += 10
私は多くの他の同様の質問を見てきましたが、私には私に必要な答えはありませんでした。私はののメイン関数の中で私のコードでsub1を試しましたが、のinit関数は互いに永遠に呼び出すので、これは再帰ループエラーを生成します。私がgameloop(またはこの例ではmain)で呼び出すと、呼び出されるたびにMainを初期化し、Subで必要な変数を消去します。私はクラスの必要がなく、機能を持っていたので、私は "パス"の1つのインスタンスを持っていた前に。これで、複数の "path"オブジェクトが必要になりました。必要な変数を得るためにmainのサブクラスを使用しています。
私の質問(スーパークラスからサブクラスを呼び出すことは悪い考えかもしれません)に答える、または答えないこの問題の解決策は、評価されるでしょう。前もって感謝します。
編集: "Sub"クラスに必要な変数を渡すことができましたが、更新する必要があるため、渡された変数がSubで変更されていることを確認するための更新メソッドが必要ですメイン。これは簡単に実行できますが、もっと簡単にやる方法があればいいと思っていました。
'Main'から継承における目的は何だ、それは持って考えると? 'Main'という名前は、それがメインプログラムであることを意味します。 2つの「主な」プログラムを持つことは理にかなっていません。 –
@BryanOakleyこれは2つのメインプログラムではありません。私のゲームでは、パスを作成する関数を持っていましたので、xパスを作ってパスクラスを作って、パスクラスのxオブジェクトを作ることができます。メインクラスの変数から計算を行う必要があります。そのため、メインから継承します。 –
あなたの例は理解するのが難しいです。どちらのクラスも実際に何もしないからです。あなたは 'sub'が必要だと言っていますが、あなたのクラスはそれで何もしません。なぜあなたのクラスはそれ自身のサブクラスのインスタンスを必要としますか? 'Main'のすべてのインスタンスが' Sub'のインスタンスを必要とし、 'Sub'が' Main'のインスタンスである場合、 'Sub'のすべてのインスタンスは' Sub'のインスタンスを必要とします。これは再帰的ただ概念的に。 'Sub'がメインクラスの変数を必要とする場合、' Main'を継承するために 'Sub'が必要なわけではありません。 'Main'インスタンスが自身を' Sub'メソッドに渡すことができます。 – BrenBarn