首页 > 解决方案 > 多重继承与多重导入语句之间是否存在性能差异?

问题描述

以下场景:假设我有一个toolbox包,它是这样设置的,例如

toolbox/
__init__.py
io/
    __init__.py
    input.py         # Contains DataInput class with method read_txt_file()
    output.py        # Contains DataOutput class
functionalities/
    __init__.py
    func1.py     # Contains class Func1 with method calculate()
    func2.py     # Contains class Func2

每个*.py文件将包含一个类,其中定义了多个方法。这必须用作多个脚本/程序的工具箱,这些脚本/程序只需要其中定义的一些功能(例如,脚本 A 需要来自 classDataInput和 class的方法Func1,而 Script B 需要来自 classDataOutput和 class的方法Func2,等等......)

现在有两种可能性来收集所需的方法(在这种情况下为方法read_txt_file()calculate()):

1)从模块中导入类

from toolbox.io.input import DataInput
from toolbox.io.functionalities.func1 import Func1

obj1 = DataInput()
obj1.read_txt_file()
obj = Func1()
obj.get_data(obj1)           # Some getter method defined in Func1
obj.calculate()

2) 定义一个从类具有多重继承的类DataInput,并且Func1这样的一个实例具有已经继承的方法

import toolbox.io.input
import toolbox.functionalities.func1

class MyClass(toolbox.io.input.DataInput, toolbox.io.functionalities.func1.Func1):
    pass

obj = MyClass()
obj.read_txt_file()
obj.calculate()

在这两种情况下,文本文件中的数据都已被读取、计算并且现在封装在obj.

问题是:就性能(运行时、内存等)而言,哪种可能性是首选?

脚注:我知道 Pythonistas 有争议地讨论了数据封装和 getter/setter 方法。虽然,我有兴趣评估这两种可能性。

标签: pythonpython-3.xoop

解决方案


推荐阅读