Python模块中的多个类
我刚开始学习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
关于组织结构,有几点需要注意:
- 不要使用内部类。只需把类放在同一个模块里
- 按照惯例,以_开头的东西是“私有的”
- 有“公共变量”是可以的