Sobes.tech
Back to questions
Junior — Middle
80

Какое отличие между использованием композиции и наследованием в Python при проектировании классов?

Answer from AI

sobes.tech AI

Наследование и композиция — два основных способа организации отношений между классами в Python.

Наследование означает, что один класс (подкласс) расширяет или переопределяет поведение другого (родительского). Это "является" отношение. Например, класс Кошка наследует Животное.

class Animal:
    def speak(self):
        print("Some sound")

class Cat(Animal):
    def speak(self):
        print("Meow")

Композиция — это когда один класс содержит экземпляры других классов и использует их функциональность. Это "имеет" отношение.

class Engine:
    def start(self):
        print("Engine started")

class Car:
    def __init__(self):
        self.engine = Engine()
    def start(self):
        self.engine.start()

Отличия:

  • Наследование создаёт жёсткую связь иерархии, композиция более гибкая.
  • Композиция способствует слабой связанности и лучшей модульности.
  • Наследование удобно, когда подкласс — это тип родительского класса.

Выбор зависит от задачи: если нужна "является" связь — наследование, если "имеет" — композиция.