2011-11-20 26 views
7

Zakładając, że mam klasę X, w jaki sposób mogę sprawdzić, która klasa podstawowa/klasy i ich klasa bazowa/klasy itp.?Jak mogę sprawdzić hierarchię klas w Pythonie?

Używam Eclipse PyDev i Java na przykład można wpisać CTRL + T na klasy nazwą i zobaczyć hierarchię, jak:

 
java.lang.Object 
    java.lang.Number 
     java.lang.Integer 

Czy jest możliwe dla Pythona?

Jeśli nie jest to możliwe w Eclipse PyDev, gdzie mogę znaleźć te informacje?

+2

ten odpowiedział [Python: Lista wszystkich klas bazowych w hierarchii] (http://stackoverflow.com/questions/1401661/python-list-all-base-classes-in-a-hierarchy) – kojiro

Odpowiedz

8

Hit f4 z podświetloną nazwą klasy, aby otworzyć widok hierarchii.

2

Ponadto każda klasa nosi przy sobie atrybut o nazwie __mro__, który nadaje wszystkie klasy nadrzędne, z których dana klasa może dziedziczyć metody lub atrybuty. Czytaj je od lewej do prawej. Na przykład:

assert bool.__mro__ == (<class 'bool'>, <class 'int'>, <class 'object'>) 
assert True.__class__.__mro__ == (<class 'bool'>, <class 'int'>, <class 'object'>) 
+0

Również każda klasa (nowy styl) ma metodę 'mro', więc możesz wywołać' bool .mro() 'i' True .__ class __. mro() 'odpowiednio (zwraca listę zamiast krotki). – derenio