Краткая история:
Я хочу внести небольшие изменения в поведение MainClass и HelperClass, от которых он зависит, в популярной библиотеке.Я могу легко расширить оба подкласса, но как мне сказать классу верхнего уровня использовать мою расширенную версию вспомогательного класса?
MainClass генерирует экземпляры HelperClass посредством простого создания экземпляра (например, helperItem = HelperClass ()) и yield ().HelperClass кодируется в том же модуле, что и MainClass.
Longer:
Для формы Django я хочу создать вложенный словарь, содержащий данные, определяющие отображение HTML этой формы.Объекты Django Form генерируют HTML, оборачивая объекты Field в класс BoundField, у которого есть методы для доступа к структурам данных Field для создания соответствующих строк HTML.
Я хочу:
- расширить / изменить форму, чтобы использовать мою расширенную версию BoundField, и
- расширить форму, чтобы добавить метод, который циклически просматривает поля, вызываяgetHtmlSpec () для каждого.
(Здесь я замалчиваю важные детали реализации Django, например, следует ли расширять Form или BaseForm и расширять ли виджеты BoundField или / и Input.)
Очевидно, что я мог бы сделать это, расширив Form, чтобы добраться до «полей» и генерировать эти вещи, и это могло бы стать лучшим дизайном.Но это кажется более элегантным, и мне любопытно, даже если это не лучший подход.