[英]Passing a self-reference down to an instantiated class
我想将自我引用传递给实例化的 class(孩子应该有权访问父母)。 如果所有内容都在一个文件中,它就可以工作,如下所示:
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')
output 是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')
output 是assert isinstance(parent, ClassA) AssertionError
那是因为第二个传递了__main__.ClassA
,而ClassB
需要一个ClassA.ClassA
。 找到一种不同的方法来完成此操作,例如将ClassA
放入其自己的模块中。
class ClassB:
def __init__(self, name, parent, 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, ClassA)
if __name__ == '__main__':
a = ClassA('parent')
这对我有用,但我不知道这是否是您要找的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.