У меня есть несколько объектов разных типов (разные имена функций, разные подписи), и я обезьяна патчи их, чтобы иметь общий доступ к ним из разных функций. Вкратце, есть диспетчер, который принимает объекты, которые я хочу запланировать, и в зависимости от типа объекта он вызывает другого патчера. Патчер будет добавлять методы к объекту:Добавление базового класса в существующий объект в python
def patcher_of_some_type(object):
def target(self, value):
# do something and call self methods
object.target = types.MethodType(target, object)
# many more of these
Поскольку программа становится все более сложным, что делает оболочку вокруг объекта (или класса объектов), кажется лучшей идеей. Некоторые участники имеют общий код или взаимосвязаны. Но я не контролирую создание объекта, а также создание класса. Я получаю только объекты. И даже если бы я мог это сделать, я просто хочу обернуть (или запланировать) некоторые объекты, не все.
Одним из решений может быть добавление базового класса к существующему объекту, но я не уверен, насколько это удобно и безопасно. Есть ли другое решение?
Так классы не определены от вас? – dav1d
Нет, классы определены в библиотеке, которую я не контролирую. Я мог бы создавать оболочки из всех классов, но это будет работать только для объектов, которые я создаю, а не для экземпляров, созданных библиотекой. Если я исправляю библиотеку, происходит обратное: все объекты исправлены, и я хочу только исправить некоторые из них. Наконец, если я завержу некоторые объекты, мне нужно будет сохранить свою собственную структуру данных, чтобы ссылаться на них. Вот почему теперь я исправляю объекты, которые хочу. – Hernan
Я бы определил класс-оболочку для хранения объектов. Необходимость иметь различные типы оберток, которые имеют общий код, может обрабатываться с помощью базового класса-оболочки и получения от него специализированных версий. Основные вещи ООП ... – martineau