【发布时间】:2017-10-02 12:01:31
【问题描述】:
types.MethodType 期望什么参数,它返回什么?
https://docs.python.org/3.6/library/types.html 不多说了:
types.MethodType用户自定义类实例的方法类型。
例如,来自https://docs.python.org/3.6/howto/descriptor.html
为了支持方法调用,函数包括
__get__()方法 属性访问期间的绑定方法。这意味着所有功能 是返回绑定或未绑定方法的非数据描述符 取决于它们是从对象还是类调用。在纯 python,它的工作原理是这样的:class Function(object): . . . def __get__(self, obj, objtype=None): "Simulate func_descr_get() in Objects/funcobject.c" if obj is None: return self return types.MethodType(self, obj)
types.MethodType的第一个参数self必须是可调用对象吗?换句话说,Function类必须是可调用类型,即Function必须有方法__call__?如果
self是一个可调用对象,它是否至少需要一个参数?types.MethodType(self, obj)是否意味着将obj作为可调用对象self的第一个参数,即用obj柯里化self?types.MethodType(self, obj)如何创建并返回types.MethodType的实例?
谢谢。
【问题讨论】:
-
我是从一个 StratelyPattern 示例@@github.com/faif/python-patterns/blob/master/behavioral/… 中通过谷歌搜索来到这里的,所以它似乎可以通过类型检查完成一些事情。看起来它可以用于绑定函数以将其转换为方法。不过不完全确定。
标签: python python-3.x