インスタンス化されたクラスに自己参照を渡したい (子は親にアクセスできる必要があります)。次のように、すべてが 1 つのファイルにある場合に機能します。
class ClassB:
def __init__(self, name, parent):
assert isinstance(parent, ClassA)
self.name = name
self.parent = parent
print('my parent is', parent.name)
class ClassA:
def __init__(self, name):
self.name = name
self.b = ClassB('child', self)
a = ClassA('parent')
出力はmy parent is parent
期待通り
2 ファイル バージョンは次のとおりです。
class ClassB:
def __init__(self, name, parent):
from ClassA import ClassA
assert isinstance(parent, ClassA)
self.name = name
self.parent = parent
print('my parent is', parent.name)
と:
from ClassB import ClassB
class ClassA:
def __init__(self, name):
self.name = name
self.b = ClassB('myName', self)
if __name__ == '__main__':
a = ClassA('parent')
出力はassert isinstance(parent, ClassA) AssertionError