Dépendance du module Python

Ok j'ai deux modules, chacun contenant une classe, le problème est de leur classe de référence les uns des autres.

Permet de dire que j'ai eu par exemple un module de la salle et une personne module contenant CRoom et CPerson.

La CRoom classe contient les informations sur la chambre, et un CPerson liste de tous dans la salle.

La CPerson classe mais parfois besoin d'utiliser le CRoom classe pour la salle de sa, par exemple pour trouver la porte, ou trop voir qui d'autre est dans la chambre.

Le problème est avec les deux modules de l'importation de chaque d'autres, j'ai juste une erreur d'importation sur qui est importé deuxième 🙁

En c++ j'ai pu le résoudre en seulement, y compris les en-têtes, et puisque dans les deux cas, les classes ont juste des pointeurs vers les autres de la classe, une déclaration suffit pour l'en-tête par exemple:

class CPerson;//forward declare
class CRoom
{
    std::set<CPerson*> People;
    ...

Est-il de toute façon à le faire en python, autres que de placer les deux classes dans le même module ou quelque chose comme ça?

edit: ajout de l'exemple python montrant problème à l'aide de classes ci-dessus

erreur:

Traceback (most recent call last):
Fichier "C:\Projects\python\test\main.py", line 1, in
à partir de la salle d'importation CRoom
Fichier "C:\Projects\python\test\room.py", line 1, in
d'une personne à l'importation CPerson
Fichier "C:\Projects\python\test\person.py", line 1, in
à partir de la salle d'importation CRoom
ImportError: impossible d'importer le nom de CRoom
chambre.py

from person import CPerson

class CRoom:
    def __init__(Self):
        Self.People = {}
        Self.NextId = 0

    def AddPerson(Self, FirstName, SecondName, Gender):
        Id = Self.NextId
        Self.NextId += 1#

        Person = CPerson(FirstName,SecondName,Gender,Id)
        Self.People[Id] = Person
        return Person

    def FindDoorAndLeave(Self, PersonId):
        del Self.People[PeopleId]

person.py

from room import CRoom

class CPerson:
    def __init__(Self, Room, FirstName, SecondName, Gender, Id):
        Self.Room = Room
        Self.FirstName = FirstName
        Self.SecondName = SecondName
        Self.Gender = Gender
        Self.Id = Id

    def Leave(Self):
        Self.Room.FindDoorAndLeave(Self.Id)

source d'informationauteur Fire Lancer