Найти - Пользователи
Полная версия: Динамическая замена родительского класса.
Начало » Python для экспертов » Динамическая замена родительского класса.
1 2
Evg
Класс А наследуется от класса В, как динамически (те не меня исходник) заменить чтобы класс А наследовался от класса С и создать объект? те выполнить динамически подмену родителя B.

class B:
pass

class С:
pass

class A(B):
pass

#do something

i = A() #получить объект класса А наследованного от С

можно сделать такое?
Ferroman
Так сделать нельзя, насколько мне известно. А зачем?
Можно использовать множественное наследование.
Evg
Ну это на самом деле вот этот вопрос только в отвязке от джанги):

А что с множественным наследованием? мне нужно чтобы все методы класса С перекрыли все методы класса В ..
Андрей Светлов
>>> 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'>,)
Evg
Ух ты круто, работает!) Спасибо!
Андрей Светлов
Замечу в скобках, что это - довольно таки грязный хак. И злоупотреблять им не стоит.
Evg
Андрей Светлов
Замечу в скобках, что это - довольно таки грязный хак. И злоупотреблять им не стоит.
Я там джангу патчил просто на multidb. все лучше чем ее исходник править.
Ferroman
Андрей Светлов
Да, это очень сильное колдунство.
pasaranax
Змеиная гибкость. Но, вроде, это противоречит самому ООП.
Андрей Светлов
Не делайте из ООП идола. С точки зрения java-style очень многие вещи, начиная со свободных функций - этому ООП противоречат.
И ничего. К счастью, Питон - мультипарадигменный язык.
Другое дело, что во главу угла стоит ставить читабельность кода.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB