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

  • chrmoe

    chrmoe

    7 Kasım 2006
  • How To Cook That

    How To Cook

    16 NİSAN 2011
  • The Weavers of Eternity Paracord Tutorials

    The Weavers

    1 Ocak 2014