Python中的类可以在不同的文件中吗?

57 投票
2 回答
110000 浏览
提问于 2025-04-15 22:53

就像Java(或者PHP)一样,我习惯把类分开放在不同的文件里。
在Python里也是这样吗?另外,我应该怎么给文件命名呢?
是用小写,比如classname.py,还是和类名一样用大写,比如ClassName.py?
如果我想从这个类创建一个对象,有没有什么特别的要求,还是说因为它在同一个“项目”(netbeans)里,所以可以直接创建对象?

2 个回答

9

不,你可以在一个文件里定义多个类(还有函数等等)。一个文件也叫做模块。

要使用在这个模块/文件里定义的类或函数,你需要先用 import 来引入这个模块/文件。

95

在Python中,一个文件被称为模块。一个模块可以包含多个类或函数。

因为Python并不是仅仅一种面向对象的语言,所以规定一个文件只能包含一个类是没有意义的。

一个文件(模块)应该包含那些相关的类或函数,也就是说,它们提供相似的功能或者彼此依赖。
当然,你也不应该过于夸张。如果你的模块里有太多的类或函数,代码的可读性会受到影响。这时候,可能就该考虑把功能重新整理到不同的模块中,并创建一些


关于命名规则,你可以看看PEP 8,但简单来说:

类名

几乎没有例外,类名使用大写字母开头的命名方式。内部使用的类名前面会加一个下划线。

还有

包和模块名

模块名应该简短且全部小写。如果使用下划线能提高可读性,可以在模块名中使用。Python包的名字也应该简短且全部小写,不过不建议使用下划线。

由于模块名会映射到文件名,而有些文件系统对大小写不敏感并且会截断长名字,所以选择模块名时要尽量简短——在Unix系统上这不是问题,但在老版本的Mac、Windows或DOS上可能会出现问题。


要创建一个对象,你需要在你的文件中导入这个类。例如:

>>> from mymodule import MyClass
>>> obj = MyClass()

或者

>>> import mymodule
>>> obj = mymodule.MyClass()

或者

>>> from mypackage.mymodule import MyClass
>>> obj = MyClass()

你问的是一些基本的内容,所以我建议你去看看这个教程

撰写回答