2017-08-30 3 views
-2

In python3 können wir '__mro__' verwenden die Methode auflösende Ordnung wie unten zu bekommen:Wie kann man wissen MRO in python2

>>> class a: 
...  pass 
... 
>>> a.__mro__ 
(<class '__main__.a'>, <class 'object'>) 
>>> 

Hat python2 hat eine alternative Methode für das? Ich habe versucht, einen zu finden, aber es ist gescheitert.

>>> class a: 
...  pass 
... 
>>> dir(a) 
['__doc__', '__module__'] 
>>> class a(object): 
...  pass 
... 
>>> dir(a) 
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__'] 
+0

'__mro__' ist nicht in dir (a). Sie können jedoch auch einfach ein .__ mro__ verwenden. – TDSS

Antwort

0

mro() ist verfügbar, da Python 2,2 (https://www.python.org/download/releases/2.3/mro/)

jedoch die Klasse eine neue Stil-Klasse sein muss.

>>> class A: pass 
>>> A.mro() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: class A has no attribute 'mro' 

>>> class A(object): pass 
>>> A.mro() 
[<class '__main__.A'>, <type 'object'>] 
Verwandte Themen