如何调用bool_getter获取与None.__bool__等价的方法对象?
调用
bool_getter获取等价于None.__bool__的对象 可以通过以下参数调用bool_getter,得到符合要求的对象:
仅传入
None作为位置参数:import types bool_getter = vars(type(None))["__bool__"].__get__ value = bool_getter(None) boolNone = None.__bool__ # 验证条件 assert type(value) == type(boolNone) # 类型一致 assert value == boolNone # 对象等价也可以同时传入实例和类作为位置参数,结果完全相同:
value = bool_getter(None, type(None))
原理
vars(type(None))["__bool__"]是NoneType类的未绑定方法,它的__get__方法属于描述符机制的一部分。当传入实例None时,__get__会返回绑定到该实例的方法对象,这个对象和直接访问None.__bool__得到的对象类型一致、逻辑等价,满足要求。
内容的提问来源于stack exchange,提问作者Takuo Matsuoka
相关产品推荐
相关产品推荐

