Объединение поведения двух родительских классов без использования множественного наследования в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Объединение поведения двух родительских классов без использования множественного наследования в Python

Сообщение Anonymous »

В качестве примера я представлю здесь проблему, эквивалентную той, с которой я столкнулся.
Предположим, у меня есть эти классы, у которых есть атрибуты и методы, которые я хочу использовать в объектах, которые я создам позже:

Код: Выделить всё

class Fruit:
"""Has lots of attributes and methods."""

class Vegtable:
"""Has lots of attributes and methods."""

class Gummy:
"""Has lots of attributes and methods."""

Теперь лук "является" овощем, яблоко "является" фруктом, но мне нужно иметь возможность поддержка, например - BananaGummy и CarrotGummy.

Код: Выделить всё

CarrotGummy
«является» овощем, но также «является» мармеладом. Мне нужно иметь атрибуты и методы Vegtable и Gummy.
  • Я стремлюсь избежать множественного наследования. , например класс CarrotGummy(Vegtable, Gummy), чтобы не возникало проблемы с алмазами, если они оба наследуют Food.
  • Я читал о композиции. Но есть случаи, когда мне нужно переопределить или использовать другое поведение для определенных объектов. Поэтому, если я делаю что-то вроде следующего, я не могу воспользоваться преимуществами ООП и не могу выбирать различные варианты поведения в зависимости от объекта.

Код: Выделить всё

class CarrotGummy:
def __init__(self):
vegtable = Vegtable()
gummy = Gummy()
  • Предполагается, что у нас нет Gummy объектов, которые не являются фруктами или овощами code> упрощает проблемы? Например, если у нас нет объекта GummyBear.


Подробнее здесь: https://stackoverflow.com/questions/793 ... ritance-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»