Следующий сценарий: Предполагая, что у меня будет пакет 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 противоположным образом.Хотя меня интересует оценка обеих возможностей.