Форум сайта python.su
Класс А наследуется от класса В, как динамически (те не меня исходник) заменить чтобы класс А наследовался от класса С и создать объект? те выполнить динамически подмену родителя B.
class B:
pass
class С:
pass
class A(B):
pass
#do something
i = A() #получить объект класса А наследованного от С
можно сделать такое?
Офлайн
Так сделать нельзя, насколько мне известно. А зачем?
Можно использовать множественное наследование.
Офлайн
Ну это на самом деле вот этот вопрос только в отвязке от джанги):
А что с множественным наследованием? мне нужно чтобы все методы класса С перекрыли все методы класса В ..
Офлайн
>>> class A(object):
... pass
...
>>> class B(object):
... pass
...
>>> class C(A):
... pass
...
>>> C.__bases__
(<class '__main__.A'>,)
>>> C.__bases__ = (B,)
>>> C.__bases__
(<class '__main__.B'>,)
Офлайн
Ух ты круто, работает!) Спасибо!
Офлайн
Замечу в скобках, что это - довольно таки грязный хак. И злоупотреблять им не стоит.
Офлайн
Андрей СветловЯ там джангу патчил просто на multidb. все лучше чем ее исходник править.
Замечу в скобках, что это - довольно таки грязный хак. И злоупотреблять им не стоит.
Офлайн
Андрей Светлов
Да, это очень сильное колдунство.
Офлайн
Змеиная гибкость. Но, вроде, это противоречит самому ООП.
Офлайн
Не делайте из ООП идола. С точки зрения java-style очень многие вещи, начиная со свободных функций - этому ООП противоречат.
И ничего. К счастью, Питон - мультипарадигменный язык.
Другое дело, что во главу угла стоит ставить читабельность кода.
Офлайн