以下情况:假设我有一个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需要来自类DataInput
和类Func1
的方法,而脚本B需要来自DataOutput
类和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方法。虽然,我对两种可能性的评估感兴趣。