masterspammer (masterspammer) wrote,
masterspammer
masterspammer

Category:
Задумался тут о странном - python позволяет разными способами перопределить иерархию наследования, так сегодня я делал наследование, где в основе лежат два базовых класса... На самом деле-то всегда один, но какой именно - зависит от параметров (один из них - файл конфигурации, так что свобода маневра есть). С одной стороны, создать абстрактный класс-фабрику, конструктор которого создает экземпляры конкретных классов-потомков - точно возможно, но есть сомнения - можно ли от такого счастья наследоваться дальще. Насколько помню, класс-предок это свойство именно класса, а не объекта и код не может работать в принципе. С другой стороны, ему просто не хватало одного параметра скорее всего по недосмотру и запустить его (пусть даже удалив этот параметр с корнем) точно можно, пусть сегодня я и предпочел поспешить на маршрутку.
Другое дело, как будет работать такой кадавр - будут ли наследникам доступны методы потомка - ради чего наследование и делалось? Конечно можно сделать и более топорно, создав базовый клас фасадом для спрятанного в нем драйвера-реализации, но есть и вторая проблема. Не получается сделать низкоуровневый драйвер ничего не знающим о тех классах, что будут его использовать - в разных высокоуровневых классах разный достаточно высокоуровневый код, достаточно зависящий и от драйвера и от предметной области, и я пока не придумал, как избежать декартова произведения.
Тут или делать методы в стиле "подготовить обучающие/тестовые данные в формате класса A/B/C под драйвер 1/2/3" или делать много низкоуровневых драйвероспецифичных методов. Второе вроде как правильнее, но тогда типы передаваемых параметров и возвращаемых результатов будут тоже зависеть от драйвера. Для языка с динамической типизацией это невелика беда, но как общее решение - так себе. Неаккуратненько как-то!
Пока еще думаю.
---- наутро --
Да! Верно говорят, что с проблемой нужно переспать - скорее всего самым интересным способом будет готовит данные в общем (numpy) формате, преобразуя перед самым использованием, а иногда и преобразовывать не нужно будет.
Tags: python, Философское, ХочетсяСтранного
Subscribe

  • TV

    Купил себе два телека. Кинескопный и ЖК. Оба - мелкие автомобильные, как я и хотел. Именно о кинескопном мечтал очень давно, то переставая, то снова…

  • TV

    Ковыряясь с телевизором, залез в разные магазины - посмотреть - чего мне можно купить с одной стороны маленького, а с другой стороны -…

  • Пульт управления компьютером

    Лежал у меня давно такой пульт; я даже забыл, как много у него линий адреса и данных. 24 бита адреса и 16 - данных. Применить его без радикальной…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments