class A:
def __init__(self, name: str, hello: B = None) -> None:
self.name = name
self.hello = hello
class B:
def __init__(self, name: str, hello: A = None) -> None:
self.name = name
self.hello = hello
if __name__ == "__main__":
a = A("h1")
b = B("h2", a)
c = A("h3", b)
我直接使用是报错的
把类名改成str型放到一个list里,遍历list使用exec来调用
问题出在你得A类上,hello参数=B但是这个时候还没有B
```
class A:
def __init__(self, name: str, hello=None) -> None:
self.name = name
self.hello = hello
class B:
def __init__(self, name: str, hello=None) -> None:
self.name = name
self.hello = hello
if name == "main":
a = A("h1")
b = B("h2", a)
c = A("h3", b)
```,
所有的程序代码,最终还是要变成类似顺序结构的语句运行的,这个逻辑决定了定义总有先后,
所以定义A时,B还没定义,所以就不能使用
猜想你要实现的是两个对象结对子?
可以考虑先搞一个基类 。
类似这样
class A:
def __init__(self, name: str ) -> None:
self.name = name
self.hello = None
class B(A):
def __init__(self, name: str, hello: A = None) -> None:
A.__init__(self,name)
self.hello = hello
if __name__ == "__main__":
a = A("h1")
b = B("h2", a)
c = B("h3", b)
print(b.hello.name, c.hello.name)