知道一个类的成员是否是一个方法的最python方法是什么?注意:我只有(可能的)方法的名称(可以是类方法、实例方法或静态方法)。你知道吗
目前,我正在将类的字典中的对象类型与<type 'function'>
进行比较:
def isMethodOf(methodName,klass):
return type(klass.__dict__.get(methodName)) == type(lambda x:x)
我真的不知道这是否适用于所有的案子。
type(lambda x:x)
部分仅用于获取类型<type 'function'>
,有更好的方法吗?你知道吗
在上面使用callable。你知道吗
示例:
在Python2上,使用^{} :
对于python3,未绑定的方法已经不存在了,您应该改用^{} 。你知道吗
您还可以使用^{} type object 测试:
这两种测试都适用于} 测试函数,或者使用
@classmethod
方法和常规方法。根据设计,这些测试对于@staticmethod
方法是失败的;那些只是抵抗绑定的函数(cls.staticmethod.__get__(instance, cls)
返回函数本身)。您可以使用^{isinstance(obj, (types.MethodType, types.FunctionType))
在一个测试中捕获所有3个函数。你知道吗如果您只想测试某个东西是否可调用,那么可以使用^{} function 。即使对象是具有
__call__
方法的实例,它也可以工作:使用
callable()
可以处理所有3个方法“类型”以及上述自定义对象。注意,类,作为工厂,也是可调用的。你知道吗相关问题 更多 >
编程相关推荐