Python模块中的多个类

44 投票
5 回答
53222 浏览
提问于 2025-04-15 21:34

我刚开始学习Python(之前是用JAVA),想请教一下大家关于Python的一些标准做法。把多个类放在一个模块里,这样做正常吗?我在使用Django,刚开始看教程,发现他们把数据库模型类放在同一个模块里。这种做法是常见的吗,还是说我应该每个模块只放一个类?这样做有什么特别的理由吗?

希望我说得清楚,不会太笼统。提前感谢大家的帮助!

5 个回答

9

如果你有疑问,直接看看Python的标准库就行了 :)

比如,标准的日历模块里面有31个类。所以,是的,这样做是可以的。

12

可以这样理解。

在Java中,你写的是一个类,而在Python中,你写的是一个模块,而不是类。所以一个模块可以包含多个类。

每当你想使用某个特定的类时,首先要导入相应的模块,然后再调用这个类来创建对象。

这里有个例子。

Classes.py(这是一个名为'Classes'的模块)


class MyClass(object):  


    def greet(self):
        print("Hello World")


class MyNextClass(object):

    def greetAgain(self):
        print("Hello again")

现在我可以在任何地方导入这个模块


import Classes

if __name__ == '__main__':

    a=Classes.MyClass()
    a.greet()

    b=Classes.MyNextClass()
    b.greetAgain()

39

这里有一个关于Java项目的实用经验法则:

Java中最底层的包应该是一个Python文件

这是什么意思呢?如果你的Java项目组织成这样:

toplevel/
   subproject/
        Foo.java
        Bar.java
   subproject2/
        Baz.java
        Qux.java

那么你的Python项目应该看起来像这样:

toplevel/
    subproject.py <-- put class Foo, Bar here
    subproject2.py <-- put class Baz, Qux here

关于组织结构,有几点需要注意:

  • 不要使用内部类。只需把类放在同一个模块里
  • 按照惯例,以_开头的东西是“私有的”
  • 有“公共变量”是可以的

撰写回答