gpt4 book ai didi

Python 每个模块和包一个类

转载 作者:太空狗 更新时间:2023-10-30 00:22:03 24 4
gpt4 key购买 nike

我正在尝试用 Python 构建我的应用程序。从 C#/Java 背景回来,我喜欢每个文件一个类的方法。我希望我的项目树看起来像这样:

[Service]
[Database]
DbClass1.py
DbClass2.py
[Model]
DbModel1.py
DbModel2.py
TheService.py
[ServiceTests]
[Database]
DbClass1Tests.py
DbClass2Tests.py
[Model]
DbModel1Tests.py
DbModel2Tests.py
TheServiceTests.py
  1. 每个文件一个类的方法在 Python 中可行吗?
  2. 是否有可能以这样的方式创建包/模块,使包像 Java 的包或 .NET 的命名空间一样工作,即在 DbModel1Tests.py 中:

    import Service.Model

    def test():
    m = DbModel1()

最佳答案

Q1。您可以在 Python 中使用每个文件 1 个类的样式,但这并不常见。

Q2。您必须使用 from Service.Model import * 并在 Service/Model/__init__.py 中做一些通常不受欢迎的事情。避免在 Python 中使用 import *

我个人对此的建议:Python 不是 C#/Java。试图改变它以使其看起来像 $other_language 会导致沮丧和糟糕的用户体验。

请记住:

  • 除了 Python 模块中的类(例如函数)之外,您还可以拥有其他内容
  • 您不必从模块中导入类,除非您需要实例化该类。特别是,如果您的代码仅使用作为参数传递给您的函数/方法的 DbModel1 实例,则无需在该部分代码中导入
  • from Service.Model.DbModel1 import DbModel1 看起来很糟糕。首选 from service.model import DbModel1 :避免在文件名和目录名中使用大写字母,并在文件中对类/函数进行逻辑分组(而不是像每个文件 1 个类那样将它们分组在目录中系统。)

关于Python 每个模块和包一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8061930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com