具有不同依赖关系的单个python文件中的多个类

时间:2017-10-27 05:20:40

标签: python python-3.x libraries python-import python-3.6

如果我们在一个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语句。

我不知道该怎么做。除了主要问题,在这样的场景中遵循的最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

导入语句通常应位于python文件(约定)的顶部。根据惯例,您应该在一个文件中将类似意图和要求的类组合在一起。导入库时,文件中的所有类都可以使用它们。如果一个certaing类不需要类似的导入,或者需要导入很多其他类不需要的库,那么从技术上讲,它应该在不同的文件中,并且可以导入和实例化该文件。

函数中的导入语句不会造成任何伤害(除非反复运行的延迟时间非常短),但正如@Evert所说,如果用户体验失败,可能会给用户带来痛苦。