Evg
Сен. 21, 2009 22:52:01
Класс А наследуется от класса В, как динамически (те не меня исходник) заменить чтобы класс А наследовался от класса С и создать объект? те выполнить динамически подмену родителя B.
class B:
pass
class С:
pass
class A(B):
pass
#do something
i = A() #получить объект класса А наследованного от С
можно сделать такое?
Ferroman
Сен. 21, 2009 23:05:18
Так сделать нельзя, насколько мне известно. А зачем?
Можно использовать множественное наследование.
Evg
Сен. 21, 2009 23:19:21
Ну это на самом деле
вот этот вопрос только в отвязке от джанги):
А что с множественным наследованием? мне нужно чтобы все методы класса С перекрыли все методы класса В ..
Андрей Светлов
Сен. 21, 2009 23:48:53
>>> 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
Сен. 22, 2009 00:14:09
Ух ты круто, работает!) Спасибо!
Андрей Светлов
Сен. 22, 2009 03:04:48
Замечу в скобках, что это - довольно таки грязный хак. И злоупотреблять им не стоит.
Evg
Сен. 22, 2009 11:20:00
Андрей Светлов
Замечу в скобках, что это - довольно таки грязный хак. И злоупотреблять им не стоит.
Я там джангу патчил просто на multidb. все лучше чем ее исходник править.
Ferroman
Сен. 22, 2009 13:56:12
Андрей Светлов
Да, это очень сильное колдунство.
pasaranax
Сен. 22, 2009 17:35:06
Змеиная гибкость. Но, вроде, это противоречит самому ООП.
Андрей Светлов
Сен. 23, 2009 02:07:20
Не делайте из ООП идола. С точки зрения java-style очень многие вещи, начиная со свободных функций - этому ООП противоречат.
И ничего. К счастью, Питон - мультипарадигменный язык.
Другое дело, что во главу угла стоит ставить читабельность кода.