Если я по какой-то причине использую эту функцию для распечатки иерархии классов Python, тип "float" не отображается в выводе.
def printHier(cls, indent = 0, tab = " "):
print "%s%s" % (tab*indent, cls.__name__)
try:
subclasses = cls.__subclasses__()
except TypeError:
subclasses = cls.__subclasses__(cls)
subclasses.sort(key = lambda v: v.__name__)
for subcls in subclasses:
printHier(subcls, indent = indent + 1)
printHier(object)
Если я определю эту дополнительную функцию (ниже) и вызову ее перед вызовом первой, то всплывает float. Кто-нибудь может объяснить это странное поведение? Есть ли что-то ленивое в некоторых классах Python? Я спрашиваю себя, не может ли он пропустить некоторые другие классы.
def tweak(cls):
"""
for some reason "float" doesn't show up in hierarchy unless
we "prod" it...
"""
superclasses = cls.__mro__
tweak(float)