¿Hay alguna manera de obtener todas las funciones anuladas de una subclase en Python?
Ejemplo:
class A:
def a1(self):
pass
def a2(self):
pass
class B(A):
def a2(self):
pass
def b1(self):
pass
Aquí, me gustaría obtener una lista ["a2"]
para un objeto de clase B
(o para el objeto de clase en sí) ya que la clase B
anula solo un método, a saber a2
.
python
reflection
overriding
subclass
Andreas Schörgenhumer
fuente
fuente
vars
Era lo que me faltaba. muchas gracias por la respuesta (increíblemente) rápida!parent_attrs
en una línea si quieres:parent_attrs = {a for b in cls.__bases__ for a in dir(b)}
Puede hacer uso de la
__mro__
tupla, que contiene el orden de resolución del método.Por su ejemplo:
Por lo tanto, puede recorrer esa tupla y verificar si un
B
método también está en una de las otras clases.fuente
__init__, __eq__, ....... etc
fuente
A
yB
no se pueden modificar. OP quiere saber cuál deB
los métodos anula uno deA
los métodos.