编程语言
首页 > 编程语言> > 除非“引起”,否则python float类不会显示在类层次结构中

除非“引起”,否则python float类不会显示在类层次结构中

作者:互联网

如果由于某种原因我使用此函数打印出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)

解决方法:

Python 2.6.1似乎有问题.在我的装置(Windows上分别为2.6.4和2.7)以及由Jay和samplebias测试的其他较新版本上,都显示了float.

我在CPython变更日志中寻找了相关的内容,但找不到任何相关的内容.

标签:floating-point,lazy-evaluation,hierarchy,python,class
来源: https://codeday.me/bug/20191102/1993056.html