во-первых, 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))
Код: Выделить всё
from .person import Person
class Pet:
def __init__(self, name: str, owner: Person):
self.name = name
self.owner = owner
Код: Выделить всё
ImportError: cannot import name 'Person'
- храните определения классов Person и Pet в одном файле.
- откажитесь от атрибута pet.owner (который служит удобным указателем)
- не используйте подсказки/аннотации типов там, где это необходимо. вызовет циклические ссылки:
Код: Выделить всё
class Pet:
def __init__(self, name: str, owner):
Есть ли другой способ?
Тот, который позволяет мне чтобы
- разделить классы на разные файлы
- использовать аннотацию типа в сочетании с указателями, как показано
Подробнее здесь: https://stackoverflow.com/questions/466 ... ributes-in