让我们考虑python(3.x)脚本:
main.py:
from test.team import team
from test.user import user
if __name__ == '__main__':
u = user()
t = team()
u.setTeam(t)
t.setLeader(u)
Run Code Online (Sandbox Code Playgroud)
测试/ user.py:
from test.team import team
class user:
def setTeam(self, t):
if issubclass(t, team.__class__):
self.team = t
Run Code Online (Sandbox Code Playgroud)
测试/ team.py:
from test.user import user
class team:
def setLeader(self, u):
if issubclass(u, user.__class__):
self.leader = u
Run Code Online (Sandbox Code Playgroud)
现在,当然,我已经获得了循环导入和出色的ImportError.
所以,不是pythonista,我有三个问题.首先:
一世.我怎么能让这个东西工作?
并且,知道某人将不可避免地说"循环导入总是表明设计问题",第二个问题来自:
II.为什么这个设计不好?
最后,第三个:
III.什么是更好的选择?
确切地说,上面的类型检查只是一个例子,还有一个基于类的索引层,它允许ie.发现所有用户都是一个团队的成员(用户类有许多子类,因此索引加倍,对于一般用户和每个特定子类)或所有团队都将用户作为成员
编辑:
我希望更详细的例子能够澄清我试图实现的目标.为了可读性省略了文件(但是有一个300kb的源文件让我感到害怕,所以请假设每个类都在不同的文件中)
# ENTITY
class Entity:
_id = None
_defs = {}
_data = None
def …Run Code Online (Sandbox Code Playgroud)