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

问题描述 投票:1回答:2

我正在学习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 oop naming conventions
2个回答
1
投票

有关在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


0
投票

根据我在文档中和此处阅读的内容,最好避免使用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

© www.soinside.com 2019 - 2024. All rights reserved.