Python类、数据结构和适当的体系结构

2024-05-23 18:58:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序,它从不同的服务请求用户信息,以某种方式将它们组合在一起。管理东西和做一些松散的互动。 我所有的python项目在一定的规模下都会出现问题。导入开始变得递归,处理数据变得烦人。在

我刚刚遇到的一个问题的一个快速的例子可以用这个简单的例子来展示。我有一个主模块(这里是a),它创建主对象(singleton)。 这些对象需要互相调用函数,所以我使用main作为连接器。在这个给定的例子中,我不明白当B被创建时,它从A请求的列表是(None)NoneType。getter函数不一定是我所采用的方法,但它在另一种情况下有帮助。你有什么小贴士,读到重点,如何构造中等规模的python程序。谢谢!在

import B

some_list = None
b = None

def get_list():
    return some_list

if __name__ == "__main__":
    some_list = [1,2,3]
    b = B.B()
    print b.my_list

和模块B

^{pr2}$

Tags: 模块数据项目对象用户程序none信息
1条回答
网友
1楼 · 发布于 2024-05-23 18:58:23

现在您有两个主模块的副本,每个副本都是sys.modules中的一个单独条目:

  1. 从命令行启动的初始Python脚本始终称为__main__

  2. 您导入了A.py文件作为A模块。这与__main__模块分离。

是的,同一个源文件提供了这两个模块,但是Python认为它们是不同的。在

因此,第二个副本没有执行if __name__ == '__main__':块,因为__name__变量被设置为'A'。因此,A.some_list和{}仍然设置为None;您希望__main__.some_list和{}。在

不要把代码放在其他模块需要导入才能访问的主入口点。传入这样的依赖项,或者由主模块和其他模块都可以导入的独立模块来管理它们。在

例如,可以将函数传递给B()类:

b = B.B(get_list)

相关问题 更多 >