python依赖模块_Python模块依赖

好,我有两个模块,每个包含一个类,问题是他们的类引用对方.

让我们说,例如我有一个房间模块和一个包含CRoom和CPerson的人员模块.

CRoom类包含有关房间的信息,以及房间中每个房间的CPerson列表.

然而,CPerson课程有时需要为其房间使用CRoom类,例如找到门,或者也看看房间里还有谁.

问题是两个模块互相导入,我只是得到一个导入错误,其中进行了二进制:

在c中,我可以通过仅包含头来解决这个问题,并且因为在这两种情况下,类只有指向另一个类的指针,所以头部的前向声明就足够了,例如:

class CPerson;//forward declare

class CRoom

{

std::set People;

...

有没有在python这样做,除了把两个类放在同一个模块或类似的东西?

编辑:添加python示例显示问题使用上面的类

错误:

Traceback (most recent call last):

File “C:\Projects\python\test\main.py”, line 1, in

from room import CRoom

File “C:\Projects\python\test\room.py”, line 1, in

from person import CPerson

File “C:\Projects\python\test\person.py”, line 1, in

from room import CRoom

ImportError: cannot import name CRoom

room.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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值