Pythoner
Фотография
✈️Метод subclasshook используется для определения, является ли один класс подклассом другого. Он вызывается при проверке isinstance() и issubclass() для определения отношения наследования между классами.
⬆️Этот метод позволяет настроить поведение этих функций для пользовательских классов.
➡️Пример:
class A:
def __init__(self, value):
self.value = value
class B:
def __init__(self, value):
self.value = value
def __subclasshook__(cls, subclass):
return (hasattr(subclass, 'value') and
callable(subclass.value) and
subclacc.value.__name__ == 'print_value')
class C:
def __init__(self, value):
self.value = value
def print_value(self):
print(self.value)
a = A(5)
b = B(10)
c = C(15)
# Проверка
print(issubclass(C, B)) # True
print(issubclass(A, B)) # False
⬆️В примере метод subclasshook класса B проверяет, есть ли у подкласса метод print_value. Если да, то возвращает True, что позволяет считать его подклассом B.
🐍Pythoner
10 · 1.4K ·