考虑两个模块(在同一个文件夹中):首先,person.pyfrom typing import Listfrom .pet import Pet class Person: def __init__(self, name: str): self.name = name self.
考虑两个模块(在同一个文件夹中):
首先,person.py
from typing import List
from .pet import Pet
class Person:
def __init__(self, name: str):
self.name = name
self.pets: List[Pet] = []
def adopt_a_pet(self, pet_name: str):
self.pets.append(Pet(pet_name, self))
然后是 pet.py
from .person import Person
class Pet:
def __init__(self, name: str, owner: Person):
self.name = name
self.owner = owner
由于循环依赖,上面的代码将无法运行。您将收到错误:
ImportError: cannot import name 'Person'
使其发挥作用的一些方法:
例如:
class Pet:
def __init__(self, name: str, owner):
我发现到目前为止我列出的所有选项都存在一些缺点。
还有其他方法吗?可以让我
或者:是否有很好的理由去遵循我已经列出的解决方案之一?