Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以正确的方式导入python?_Python_Oop_Naming_Conventions - Fatal编程技术网

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

如何以正确的方式导入python?,python,oop,naming,conventions,Python,Oop,Naming,Conventions,我正在学习python编程,我想了解一些信息。 我正在使用OOP进行一个小项目。以下是项目结构的一个示例: PROJECT_FOLDER |__ main.py |__ modules |__ __init__.py |__ Example.py 要在这里导入我的类,只需导入一个,但通常要导入更多,我应该逐个导入每个文件,还是在_init__.py文件中创建一个all规则 以下是我的想法: # Example.py cla

我正在学习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
或者,第二个想法:

# Second version of __init__.py
__all__ = ['Example']
根据我在文档和这里读到的内容,最好避免使用import*,因为它可能会让人困惑。但是,如果我需要导入56个类,我应该在开始编码之前写56行来导入我的类吗?而且,使用import*会迫使我编写我的_example=example.example,这个例子并不漂亮,也可能会让人困惑

总之,用包括大写首字母在内的类名命名类文件是否更好?我了解到这在PHP中是一个很好的实践,但python似乎有其他约定的蛇案例,例如pylint总是乐于提醒我:

谢谢你的回答,祝你愉快

根据我在文档和这里读到的内容,最好避免使用import*,因为它可能会让人困惑

这是真的。尽可能避免导入

但是,如果我需要导入56个类,我应该在开始编码之前写56行来导入我的类吗

对。但是您预计使用56个类会有多少个文件

而且,使用import*会迫使我编写我的_example=example.example,这个例子并不漂亮,也可能会让人困惑

我想您的意思是不使用import*,但是还有from module import names语法,所以您可以使用from modules.example import-example和my_example=example

总之,用包括大写首字母在内的类名命名类文件是否更好?我了解到这在PHP中是一个很好的实践,但python似乎有其他约定的蛇案例,例如pylint总是乐于提醒我:


按照惯例,模块是snake\u case.py,类是PascalCase,变量和函数的名称是snake\u case,常量是BIG\u snake\u case。

在python中导入时有一些通用约定。import*称为通配符导入,最好避免使用通配符导入,无论您使用的是哪种编程语言。如果您的56个类都在一个文件中,您可以像从my_文件导入class_1,class_2。。。。您可以使用括号使其更清晰,从我的文件导入类1、类2、类3。。。如果类不在一个文件中,请在init.py中导入它们,然后可以像上面的示例那样在一行中导入所有类。在python中导入的另一个约定是始终从导入标准库开始,然后导入第三方包,最后导入您自己的模块。比如说

导入系统

导入请求

从我的包中导入一些东西


python中的类应为CamelCase,对于模块,应使用带下划线的单独单词。从MyCordNeLoMyMyObjultMease/P>如果你在一个模块中有56个类,那么你应该考虑重构而不是做通配符导入。谢谢,但是它只是一个例子,而不是一个真实的实例。你可以导入模块,给它一个别名,并用它来访问类。将模块导入为mds my_example=mds.example将示例导入到_init__;.py这对于python项目结构和导入最佳实践来说是非常好的,这是安全的。举个简单的例子:千万不要从tkinter import*导入数百个名称。不要将tkinter作为tk导入。然后使用tk.按钮等等…非常感谢。实际上,我不知道我可以从_init_upy.py文件导入,这回答了主要问题。谢谢你提供的所有信息:!只是吹毛求疵,但我的类名实际上是PascalCase,它是camelCase的一个子类,通常被称为大写camelCase。另请注意,如果您有子文件夹,则可以从somefolder.subfolder.my_包导入my_模块将其作为导入。我不确定MyClassName的大小写是否合适,也不确定名称是否正确。。。我生锈了吗?我不同意。导入*使您导入所有内容。不需要再写代码了。你刚刚解出了宇宙,你的程序的输出将是42。
# Second version of __init__.py
__all__ = ['Example']
# Second version of main.py
from modules import *

my_example = Example.Example()