我正在学习python编程,希望获得一些信息。我正在使用OOP进行一个小项目。这是项目结构的示例:
PROJECT_FOLDER
|__ main.py
|__ modules
|__ __init__.py
|__ Example.py
要导入我的类(这里只是一个,但通常是更多个),我应该一个一个地导入每个文件,还是应该在__ init __。py文件中创建一个“ all”规则?
这是我的想法:
# Example.py
class Example:
def __init__(self):
print('Hello from Example')
第一个想法:
# First version of __init__.py is an empty file
# First version of main.py
from modules.Example import Example
my_example = Example()
或者,第二个主意:
# Second version of __init__.py
__all__ = ['Example']
# Second version of main.py
from modules import *
my_example = Example.Example()
根据我在文档中和此处阅读的内容,最好避免使用import *
,因为它可能会造成混淆。但是,如果需要导入56个类,是否应该在开始编码之前写56行代码来导入我的类?而且,使用import *
会迫使我写my_example = Example.Example()
,它不太漂亮,也可能造成混淆。
总结一下,用类名(包括大写的首字母)来命名类文件更好吗?我了解到这是PHP的一种好习惯,但是python似乎还有其他约定(例如,蛇案),pylint总是很乐意提醒我:)
感谢您的回答,祝您愉快!
有关在python中进行导入的一些常规约定。 import *称为通配符导入,无论您使用哪种编程语言,最好都避免使用通配符导入。如果您所有的56个类都在一个文件中,则将其像from my_file import class_1, class_2, ...
一样导入。您可以使用括号使其更整洁,如果您的类不在一个文件中,请使用from my_file import (class_1, class_2, class_3, ...)
将其导入init。py中,然后可以像上述示例一样将它们全部导入一行。使用python导入的另一种约定是始终从导入标准库开始,然后是第三方软件包,最后是您自己的模块。例如
导入系统
导入请求
从my_package导入某物
python中的类应为CamelCase,对于模块,带下划线的单词应分开。 from MyClassName import my_module
根据我在文档中和此处阅读的内容,最好避免使用import *,因为这可能会造成混淆。
是的。如果可以,请避免使用import *
。
但是,如果需要导入56个类,是否应该在开始编码之前写56行代码来导入我的类?
是。但是,使用56个类,您预计会有多少个文件?
,但是也有而且,使用import *会迫使我编写my_example = Example.Example(),它并不漂亮,也可能造成混淆。
我想您的意思是使用
import *
表示不是
from module import names
语法,因此您可以执行from modules.example import Example
,然后使用my_example = Example()
。总结一下,用类名(包括大写的首字母)来命名类文件更好吗?我了解到这是PHP的一种好习惯,但是python似乎还有其他约定(例如,蛇案),pylint总是很乐意提醒我:)
通常,模块是
snake_case.py
,类是PascalCase
,变量和函数的名称是snake_case
,常量是BIG_SNAKE_CASE
。