您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python循环再次导入(又是该设计有什么问题)

python循环再次导入(又是该设计有什么问题)

循环进口本质上不是一件坏事。team代码自然地依赖,user而使用进行user某些操作team

这里最糟糕的做法是from module import member。该team模块正在尝试user在导入时获取该类,而该user模块正在尝试获取team该类。但是team该类尚不存在,因为您仍处于team.pywhenuser.py运行的第一行。

而是,仅导入模块。这样可以更清晰地命名空间,使以后的猴子修补成为可能,并解决了导入问题。因为您只是在导入时导入 模块 ,所以您不在乎尚未定义 模块 中的 。等到您开始使用该类时,它就会成为现实。

因此,test / users.py:

import test.teams

class User:
    def setTeam(self, t):
        if isinstance(t, test.teams.Team):
            self.team = t

测试/teams.py:

import test.users

class Team:
    def setLeader(self, u):
        if isinstance(u, test.users.User):
            self.leader = u

from test import teams然后teams.Team,如果您想test少写,也可以。那仍然是导入模块,而不是模块成员。

另外,如果TeamUser比较简单,请将它们放在同一模块中。您无需遵循Java每个文件一个类的习惯用法。该isinstance测试和set方法也尖叫unpythonic- Java的疣给我; 根据您在做什么,最好使用普通的,非类型检查的@property

python 2022/1/1 18:30:43 有452人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶