Apakah ada cara untuk mendapatkan semua fungsi subclass di Python?
Contoh:
class A:
def a1(self):
pass
def a2(self):
pass
class B(A):
def a2(self):
pass
def b1(self):
pass
Di sini, saya ingin mendapatkan daftar ["a2"]
untuk objek kelas B
(atau untuk objek kelas itu sendiri) karena kelas B
hanya menimpa metode tunggal, yaitu a2
.
python
reflection
overriding
subclass
Andreas Schörgenhumer
sumber
sumber
vars
adalah hal yang saya lewatkan. terima kasih banyak atas jawaban (luar biasa) yang cepat!parent_attrs
dalam satu baris jika Anda mau:parent_attrs = {a for b in cls.__bases__ for a in dir(b)}
Anda dapat menggunakan
__mro__
tuple, yang menampung urutan resolusi metode.Sebagai contoh Anda:
Jadi Anda bisa mengulang tuple itu dan memeriksa apakah suatu
B
metode juga ada di salah satu kelas lainnya.sumber
__init__, __eq__, ....... etc
sumber
A
danB
tidak dapat dimodifikasi. OP ingin mengetahuiB
metode mana yang menggantikan salah satuA
metode itu.