Python中的类可以在不同的文件中吗?
就像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()
你问的是一些基本的内容,所以我建议你去看看这个教程。