Есть ли способ получить все переопределенные функции подкласса в Python?
Пример:
class A:
def a1(self):
pass
def a2(self):
pass
class B(A):
def a2(self):
pass
def b1(self):
pass
Здесь я хотел бы получить список ["a2"]
для объекта класса B
(или для самого объекта класса), поскольку класс B
переопределяет только один метод, а именно a2
.
python
reflection
overriding
subclass
Андреас Шоргенхумер
источник
источник
vars
это было то, чего мне не хватало. большое спасибо за (невероятно) быстрый ответ!parent_attrs
в одну строку, если вы хотите:parent_attrs = {a for b in cls.__bases__ for a in dir(b)}
Вы можете использовать
__mro__
кортеж, который содержит порядок разрешения метода.Для вашего примера:
Таким образом, вы можете перебрать этот кортеж и проверить, есть ли
B
метод в одном из других классов.источник
__init__, __eq__, ....... etc
источник
A
иB
не могут быть изменены. OP хочет знать, какой изB
методов переопределяет один изA
методов.