Czy istnieje sposób na uzyskanie wszystkich nadpisanych funkcji podklasy w Pythonie?
Przykład:
class A:
def a1(self):
pass
def a2(self):
pass
class B(A):
def a2(self):
pass
def b1(self):
pass
W tym miejscu chciałbym uzyskać listę ["a2"]
dla obiektu klasy B
(lub samego obiektu klasy), ponieważ klasa B
zastępuje tylko jedną metodę, a mianowicie a2
.
python
reflection
overriding
subclass
Andreas Schörgenhumer
źródło
źródło
vars
było to, czego mi brakowało. wielkie dzięki za (niewiarygodnie) szybką odpowiedź!parent_attrs
w jednej linii, jeśli chcesz:parent_attrs = {a for b in cls.__bases__ for a in dir(b)}
Możesz skorzystać z
__mro__
krotki, która utrzymuje kolejność rozdzielczości metody.Na przykład:
Możesz więc zapętlić tę krotkę i sprawdzić, czy
B
metoda należy również do jednej z pozostałych klas.źródło
__init__, __eq__, ....... etc
źródło
A
iB
nie można ich modyfikować. OP chce wiedzieć, która zB
metod zastępuje jedną zA
metod.