SORU
5 EKİM 2010, Salı


Nasıl Python, belirli bir sınıfın tüm alt bulabilirim?

Python temel sınıfından devralınan Tüm Dersler almaya çalışan bir yaklaşım istiyorum.

CEVAP
5 EKİM 2010, Salı


Yeni-stil sınıfları alt sınıfları verir: __subclasses__ bir yöntem var

class Foo(object): pass
class Bar(Foo): pass
class Baz(Foo): pass
class Bing(Bar): pass

Burada alt sınıfların isimleri:

print([cls.__name__ for cls in vars()['Foo'].__subclasses__()])
# ['Bar', 'Baz']

Burada alt sınıfların kendilerini:

print([cls for cls in vars()['Foo'].__subclasses__()])
# [<class '__main__.Bar'>, <class '__main__.Baz'>]

Alt sınıfları gerçekten de üs olarak Foo yapılacaklar listesi onay:

for cls in vars()['Foo'].__subclasses__():
    print(cls.__base__)
# <class '__main__.Foo'>
# <class '__main__.Foo'>

Not Eğer subsubclasses istiyorsanız, recurse gerekecek:

def all_subclasses(cls):
    return cls.__subclasses__()   [g for s in cls.__subclasses__()
                                   for g in all_subclasses(s)]

print(all_subclasses(vars()['Foo']))
# [<class '__main__.Bar'>, <class '__main__.Baz'>, <class '__main__.Bing'>]

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • J Medema

    J Medema

    11 EKİM 2006
  • movies95

    movies95

    27 Kasım 2006
  • xSammyJoe1

    xSammyJoe1

    19 Temmuz 2011