LINUX.ORG.RU

[python] Выполнить некий код во время наследования класса

 


0

1

Возможно ли такое:
Есть класс Baseclass
Когда от него наследуется какой-то класс, выполняется некоторый код.
Если да, то как?
Если нет, то почему? Принципиально нельзя или просто не реализованно?

Ответ на: комментарий от vladimir-vg

>Или ты имеешь ввиду во время чтения исходного кода?
Видимо когда ручками пишется.

Booster ★★
()
Ответ на: комментарий от vladimir-vg

ну, когда создается класс (не объект класса, а класс), наследник некоторого класса.
Или это никогда? )

nbdarvin
() автор топика

Принципиально можно.

Встречный вопрос - зачем? Обычно, когда появляется желание сделать что-нибудь «этакое», можно сделать это более очевидным образом и без заигрываний с объектной моделью.

Нет, правда, зачем?

Чтобы не быть голословным, - почитайте про метаклассы.

shylent
()
Ответ на: комментарий от power

поделие для прозрачной связи джанго-сервера с pyqt клиентом

nbdarvin
() автор топика

В Common Lisp, с метаобъектным протоколом - запросто.

(defclass base ()
  ())

(defmethod validate-superclass :before
    (class (superclass (eql (find-class 'base))))
  (format t "Класс ~s наследуется от ~s~%"
          (class-name class)
          (class-name superclass)))
;;
;;потом где-либо делаем например (defclass derived (base)())
;;и читаем "Класс DERIVED наследуется от BASE"

Love5an
()
Ответ на: комментарий от shylent

> Чтобы не быть голословным, - почитайте про метаклассы.

А метаклассы - это не заигрывание с объектной моделью?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

А метаклассы - это не заигрывание с объектной моделью?

Конечно, заигрывание.

Просто я не вижу смысл давать ответ вида «X не нужно», если есть конкрентый ответ на поставленный вопрос, даже если лично я против таких методов. Поэтому я и привел свое мнение + объективную информацию.

shylent
()
Ответ на: комментарий от shylent

Чтобы не быть голословным, - почитайте про метаклассы.

В дереве наследования уже может быть метакласс, тогда возникает конфликт и пути его разруливания иногда очень нетривиальны и грозят хрупким кодом.

baverman ★★★
()

Ты задаешь такие вопросы ради принципиального интереса или практического? Если второе, то хотелось бы услышать какую конкретную задачу ты хочешь решить.

baverman ★★★
()
Ответ на: комментарий от infernape_evolution

а от type(Parent)

Thx. Даже следа подобной мысли в голову не пришло, когда очень надо было. А как по питонячьи выглядит... м-м-м... няшка. Сейчас все свои костылики поправлю.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.