Как в Python объявить, что один класс наследует от другого (родительского) класса?

Ответ

В Python наследование реализуется путем указания родительского класса (или классов) в круглых скобках () после имени дочернего класса в его объявлении.

Базовый синтаксис:

class ParentClass:
    # Атрибуты и методы родительского класса
    pass

class ChildClass(ParentClass):  # ChildClass наследует от ParentClass
    # Атрибуты и методы дочернего класса
    pass

Ключевые моменты:

  1. Явное наследование: Класс в скобках — это родительский (базовый, суперкласс).
  2. Неявное наследование: Если скобки опущены, класс неявно наследует от встроенного класса object (в Python 3).
    class MyClass:  # Эквивалентно class MyClass(object):
        pass
  3. Множественное наследование: Можно указать несколько родительских классов через запятую.
    class DerivedClass(BaseClass1, BaseClass2, MixinClass):
        pass
  4. Доступ к родительскому классу: Для вызова методов родителя из дочернего класса используется функция super().

    class Parent:
        def __init__(self, name):
            self.name = name
    
    class Child(Parent):
        def __init__(self, name, age):
            super().__init__(name)  # Вызов __init__ родителя
            self.age = age

Ответ 18+ 🔞

А, ну ты смотри, какой умный, про наследование в Python спрашиваешь! Да это ж, блядь, как в жизни: папаша что-то натворил, а ты, сука, его ошибки повторяешь, но со своими новыми косяками. Вот и вся суть.

Смотри сюда, не тупи. Чтобы один класс от другого родился, надо просто в скобках после имени дитёнка указать имя папаши. Всё, пиздец, ты уже наследник.

Вот как это выглядит, если по-простому:

class Родитель:
    # Тут у родителя какие-то свои приколы и методы
    pass

class Ребёнок(Родитель):  # Видишь скобки? Это он отцовскую фамилию взял!
    # А тут ребёнок может свои косяки добавлять или отцовские переделывать
    pass

А теперь главные фишки, чтобы не облажаться:

  1. Всё явно, блядь. Кого в скобки поставил, от того и наследуешь. Никакой магии.
  2. А если скобок нет? Да хуй с ним, не страшно. Твой класс всё равно тайно наследует от какого-то древнего дедушки по имени object. В Python 3 так всегда.
    class МойКласс:  # Типа сам по себе, а на самом деле — object ему папа!
        pass
  3. Можно от нескольких? О, это уже интереснее! Можно, сука, как в плохом анекдоте — указать через запятую целую очередь из папаш. Называется "множественное наследование". Главное потом не запутаться, кто за кого отвечает.
    class Гибрид(Папаша, Мамаша, ДядяВасяИзГаража):
        pass
  4. Как позвать отца? Иногда надо у родителя спросить, как он это делал. Для этого есть заклинание super(). Им, блядь, вызываешь методы папаши, чтобы не переписывать всё заново.

    class Родитель:
        def __init__(self, имя):
            self.имя = имя  # Родитель дал имя
    
    class Ребёнок(Родитель):
        def __init__(self, имя, возраст):
            super().__init__(имя)  # Эй, пап, дай имя! А я сам возраст добавлю.
            self.возраст = возраст

Вот и вся наука. Не такой уж и ёперный театр, правда? Главное — не наследуйся от того, что не понимаешь, а то получится пиздопроебибна какая-нибудь.