我想將自引用傳遞給實例化的類(子應該可以訪問父級)。它的工作原理,如果一切都在一個文件中是這樣的:將自引用傳遞給實例化的類
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
你的文件classB.py沒有引用ClassA – avasal 2012-04-10 08:32:29
它在'__init__'函數中導入ClassA。否則,導入不起作用。 – HWende 2012-04-10 08:34:25