私の質問は多少混乱していますが、私は自分自身を明確にするために最善を尽くします。ネストされたサブクラスが互いに親として存在するかどうかを再帰的に確認する方法はありますか?
class X:
def __init__(self, p=None):
self.parent = p
class Y(X):
def __init__(self, p=None):
X.__init__(self, p)
def recursive_check(self):
if (self.parent.parent.parent):
print(self.parent.parent.parent)
x0 = X()
x1 = X(x0)
x2 = X(x1)
y = Y(x2)
y.recursive_check()
あなたが見ることができるように、あなたはどれを取得していないだろうself.parent.parent.parent.parent
アクセスしようとします。ここで私は問題を説明しようとする作ったサンプルコードです。問題は、親がどのように入れ子になっているのかわからないことです。そのようなものが存在するかどうかは直接テストできません。私は再帰的に巣の深さをチェックしたい、それはお互いに入れ子になった100のインスタンスを持つことができます。この例では、各親アドレスが存在する場合は、それを印刷するだけです。
EDIT:
は受け入れ答えを考えると、それは私が私が望んで達成した方法は次のとおりです。
class X:
def __init__(self, p=None):
self.parent = p
def recursive_check(self):
if self.parent:
print(self.parent)
self.parent.recursive_check()
class Y(X):
def __init__(self, p=None):
X.__init__(self, p)
x0 = X()
x1 = X(x0)
x2 = X(x1)
y = Y(x2)
y.recursive_check()
はOBS:私はpygameのためのGUIを開発していますし、これは、ネストされたパネルに関係しています(レイアウト管理)。パネルがどのようにネストされているのか分かりません。
あなたは正確に何を確認していますか?最古の祖先? – schwobaseggl
最後に、実際に。私は上から下へ、それぞれが存在するかどうかを調べ、それが終わりのときに停止したい。 –
"y"はN個の親を持つことができます。私はどれくらいか分からない、それはユーザーに依存する。 yに1000の親があれば、それらのすべてにアクセスしてそれらが存在するかどうかを調べる必要があります。 –