除非“引起”,否则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