如何在python中以正确的方式导入?

我正在学习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总是很乐意提醒我:)

感谢您的回答,祝您愉快!

benben2009_ben 回答:如何在python中以正确的方式导入?

在python中导入时有一些常规约定。 import *称为通配符导入,无论您使用哪种编程语言,最好都避免使用通配符导入。如果您所有的56个类都在一个文件中,则可以像from my_file import class_1,class_2,...一样导入它。您可以使用括号使其更整洁,from my_file import (class_1,class_3,...)如果您的课程不在一个文件中,请将其导入 init .py,然后将其全部导入一行,例如上面的例子。使用python导入的另一个约定是始终从导入标准库开始,然后是第三方软件包,最后是您自己的模块。例如

导入系统

导入请求

从my_package导入一些东西

python中的

class应该是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

本文链接:https://www.f2er.com/2392748.html

大家都在问