Есть ли различия в производительности между множественным наследованием и множеством операторов импорта? - PullRequest
0 голосов
/ 10 октября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...