如果我们在一个Python文件中有多个类,是否可以在这些类中独立导入模块或库?
我发现与Java不同,Python没有样式指南,建议将各个文件中的类分开。甚至Python模块也有多个类;例如,calendar
模块在一个文件中有10个类(calendar module source code)。
在我的场景中,
我有一个名为planet.py
的Python文件。它有多个类。其中一个类需要导入pyttsx3
模块。然后它需要在使用之前获得对pyttsx3.Engine
实例的引用。目前我正在导入模块并在类__init__
方法中创建实例,如下所示。
class Animal:
pass
class Speaker:
def __init__(self):
import pyttsx3
self.engine = pyttsx3.init()
def speak(self, text):
self.engine.say(text)
self.engine.runAndWait()
其他一些程序员建议我不要在函数中导入模块。他们说每次调用函数时都会执行import语句。
我不知道该怎么做。除了主要问题,在这样的场景中遵循的最佳做法是什么?
答案 0 :(得分:2)
导入语句通常应位于python文件(约定)的顶部。根据惯例,您应该在一个文件中将类似意图和要求的类组合在一起。导入库时,文件中的所有类都可以使用它们。如果一个certaing类不需要类似的导入,或者需要导入很多其他类不需要的库,那么从技术上讲,它应该在不同的文件中,并且可以导入和实例化该文件。
函数中的导入语句不会造成任何伤害(除非反复运行的延迟时间非常短),但正如@Evert所说,如果用户体验失败,可能会给用户带来痛苦。