@montana_hand Для переопределения метода вы можете объявить метод вновь в дочернем классе.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Monkey: # Объявляем родительский класс def info(self): # Объявляем метод, который мы будет переопределять return f"I'm a monkey, my kind is gorilla" class Human(Monkey): # Объявляем дочерний класс def think(self): return f"I'm a Human and now I'm thinking" def info(self): # Переопределяем метод путем обычного пересоздания return f"I'm a Human, my kind is Homosapiens" if __name__ == "__main__": monkey = Monkey() human = Human() print(monkey.info()) # I'm a monkey, my kind is gorilla print(human.info()) # I'm a Human, my kind is Homosapiens |
@montana_hand
Для переопределения метода класса в Python необходимо определить новую версию метода с тем же именем, что и оригинальный метод. Это можно сделать следующим образом:
1 2 3 4 5 6 7 |
class MyClass: def my_method(self): print("original method") class MySubclass(MyClass): def my_method(self): print("overridden method") |
В этом примере MySubclass
является подклассом MyClass
и переопределяет его метод my_method()
. Теперь при вызове my_method()
на экземпляре MySubclass
будет вызвана новая версия метода, а не оригинальная.
1 2 3 |
>>> obj = MySubclass() >>> obj.my_method() overridden method |
Если вам нужно вызвать оригинальный метод из переопределенного метода, вы можете использовать ключевое слово super()
:
1 2 3 4 |
class MySubclass(MyClass): def my_method(self): super().my_method() # вызов оригинального метода print("overridden method") |
Это вызовет оригинальный метод, а затем напечатает строку "overridden method".