单个 python 文件中的多个 类 具有不同的依赖项
Multiple classes in a single python file with different dependencies
如果我们在单个 Python 文件中有多个 class,是否可以在这些 class 中独立导入模块或库?
我发现与 Java 不同,Python 没有建议在单个文件中分隔 class 的样式指南。即使 Python 模块也有多个 class;例如 calendar
模块在一个文件中有 10 个 classes (calendar module source code).
在我的场景中,
我有一个名为 planet.py
的 Python 文件。它有多个 classes。 classes 之一需要导入 pyttsx3
模块。然后它需要在使用它之前获得对 pyttsx3.Engine
实例的引用。目前我正在导入模块并在 class __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()
其他一些程序员建议我不要在函数中导入模块。他们说每次调用该函数时都会执行导入语句。
我不知道该怎么做。除了主要问题,在这种情况下应遵循的最佳做法是什么?
导入语句通常应位于 python 文件的顶部(约定)。根据惯例,您应该将具有 相似意图和要求 的 class 分组在一个文件中。当您导入库时,文件中的所有classes 都可以使用它们。如果某个 class 不需要类似的导入,或者需要导入很多其他 class 不需要的库,从技术上讲,它应该在不同的文件中,并且可以导入该文件并实例化。
函数中的导入语句不会造成任何伤害(如果重复 运行 则延迟时间非常短),但正如@Evert 所说,如果它们失败,可能会给用户体验带来痛苦.
如果我们在单个 Python 文件中有多个 class,是否可以在这些 class 中独立导入模块或库?
我发现与 Java 不同,Python 没有建议在单个文件中分隔 class 的样式指南。即使 Python 模块也有多个 class;例如 calendar
模块在一个文件中有 10 个 classes (calendar module source code).
在我的场景中,
我有一个名为 planet.py
的 Python 文件。它有多个 classes。 classes 之一需要导入 pyttsx3
模块。然后它需要在使用它之前获得对 pyttsx3.Engine
实例的引用。目前我正在导入模块并在 class __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()
其他一些程序员建议我不要在函数中导入模块。他们说每次调用该函数时都会执行导入语句。
我不知道该怎么做。除了主要问题,在这种情况下应遵循的最佳做法是什么?
导入语句通常应位于 python 文件的顶部(约定)。根据惯例,您应该将具有 相似意图和要求 的 class 分组在一个文件中。当您导入库时,文件中的所有classes 都可以使用它们。如果某个 class 不需要类似的导入,或者需要导入很多其他 class 不需要的库,从技术上讲,它应该在不同的文件中,并且可以导入该文件并实例化。
函数中的导入语句不会造成任何伤害(如果重复 运行 则延迟时间非常短),但正如@Evert 所说,如果它们失败,可能会给用户体验带来痛苦.