В чем разница между поиском родителя в Python 2 и Python 3
Python
Middle
Без компании
В чем разница между поиском родителя в Python 2 и Python 3
Ответы
В Python 2 для поиска родительского класса используется метод `__getattribute__` и атрибут `__bases__`, тогда как в Python 3 используется более явный и надежный механизм через `super()`.
Пример для Python 2:
```
class Parent(object):
def foo(self):
print("Parent foo")
class Child(Parent):
def foo(self):
Parent.foo(self) # Явный вызов родительского метода
print("Child foo")
```
Пример для Python 3:
```
class Parent:
def foo(self):
print("Parent foo")
class Child(Parent):
def foo(self):
super().foo() # Автоматический поиск родителя
print("Child foo")
```
Ключевые различия:
- В Python 3 `super()` работает без аргументов (под капотом использует `__class__` и `self`)
- В Python 2 нужно явно передавать класс и экземпляр: `super(Child, self)`
- Python 3 упрощает множественное наследование благодаря улучшенному MRO (Method Resolution Order)