typeutils
-类型处理¶
Python的内置功能 functools
模块在Python的一流函数支持之上构建了几个有用的实用程序。 typeutils
尝试对具有类型和实例的元编程执行相同的操作。
- boltons.typeutils.get_all_subclasses(cls)[源代码]¶
递归地查找并返回一个
list
继承的所有类型的 cls 。>>> class A(object): ... pass ... >>> class B(A): ... pass ... >>> class C(B): ... pass ... >>> class D(A): ... pass ... >>> [t.__name__ for t in get_all_subclasses(A)] ['B', 'D', 'C'] >>> [t.__name__ for t in get_all_subclasses(B)] ['C']
- boltons.typeutils.issubclass(subclass, baseclass)[源代码]¶
就像内置的
issubclass()
,此函数检查是否 subclass 继承自 baseclass 。与内置函数不同,此函数issubclass
会简单地返回False
如果任一参数都不合适(例如,如果 subclass 不是type
),而不是提高TypeError
。>>> class MyObject(object): pass ... >>> issubclass(MyObject, object) # always a fun fact True >>> issubclass('hi', 'friend') False
- boltons.typeutils.make_sentinel(name='_MISSING', var_name=None)[源代码]¶
创建并返回新的 instance 指一个新的类,适合用作“前哨”,这是一种单例,通常用来表示在下列情况下某个值丢失
None
是有效的输入。- 参数:
>>> make_sentinel(var_name='_MISSING') _MISSING
Bolton中最常见的用例是作为可选函数参数的缺省值,部分原因是它在自动生成的文档中的外观不那么令人困惑。在队列和链表中,前哨也可以很好地充当占位符。
备注
根据设计,对
make_sentinel
具有相同值的对象不会产生等价的对象。>>> make_sentinel('TEST') == make_sentinel('TEST') False >>> type(make_sentinel('TEST')) == type(make_sentinel('TEST')) False