Existe uma maneira de obter todas as funções substituídas de uma subclasse em Python?
Exemplo:
class A:
def a1(self):
pass
def a2(self):
pass
class B(A):
def a2(self):
pass
def b1(self):
pass
Aqui, eu gostaria de obter uma lista ["a2"]
para um objeto de classe B
(ou para o próprio objeto de classe), pois a classe B
substitui apenas um único método, a saber a2
.
python
reflection
overriding
subclass
Andreas Schörgenhumer
fonte
fonte
vars
era a coisa que eu estava perdendo. muito obrigado pela (incrivelmente) resposta rápida!parent_attrs
em uma linha, se você quiser:parent_attrs = {a for b in cls.__bases__ for a in dir(b)}
Você pode fazer uso da
__mro__
tupla, que contém a ordem de resolução do método.Para o seu exemplo:
Assim, você pode percorrer essa tupla e verificar se um
B
método também está em uma das outras classes.fonte
__init__, __eq__, ....... etc
fonte
A
eB
não podem ser modificadas. O OP quer saber qual dosB
métodos substitui um dosA
métodos.