Мой коллега продемонстрировал некоторый код для меня который я нашел довольно интересный:Динамически менять класс экземпляра во время выполнения?
class A(object):
def evolve(self):
if self.foo > 10:
self.__class__ = B
class B(A):
def bar(self):
print "I'm a B"
... это по существу суть его. Идея состоит в том, чтобы «специализировать» экземпляр во время выполнения после обработки других вычислений. Я думал об этом, и даже когда он чувствует себя не так (особенно назначение __class__
), я не вижу в этом ничего плохого, если иерархия типов правильно учитывается.
Может ли быть способ сделать это в Python без назначения __class__
?
Опять же, я не вижу в этом слишком много ошибок, поскольку назначение __class__
эффективно изменяет только порядок разрешения ... нет?
Я обсуждал это с моим коллегой. Проблема в том, что полный интерфейс не известен заранее. Проекты выступают в качестве абстракции для проприетарного интерфейса, который является огромным! Невозможно абстрагировать все это. Нам нужно всего лишь минутное подмножество. Я только передаю информацию. У меня не было возможности полностью проанализировать проблему ... – exhuma