Python判断对象是否是function的三种方法
来源:互联网 发布:java定时器讲解 编辑:程序博客网 时间:2024/06/01 16:08
在Python中,判断一个对象是否是方法有如下三种方法。
1. 根据“__call__”属性判断
有时候用python就有这么一种感悟,各种钩子函数就是通过内置的“__”属性实现,python学得好不好,就是对“__”属性理解得透彻不透彻。
python函数在调用时,一定会首先调用其相关“__call__”函数(没有空格),请参见python总结(四):类装饰器与方法的动态添加中的用法。
add = lambda a, b: a + b# 判断成功if(hasattr(add, '__call__')): print add(1,2)
2. 利用callable判断
这是一个据传快要废弃的方法,但是在Python 2中依旧很好用,如下:
# 判断成功if(callable(add)): print add(2, 2)
3. 利用isfunction进行判断
Python的inspect模块包含了大量的与反射、元数据相关的工具函数,isfunction就是其中一种,使用方法如下:
from inspect import isfunction# 判断成功if(isfunction(add)): print add(5, 5)
4. 无效的types.MethodType
出人意料的是types.MethodType竟然无效(版本2.7.14),如下:
import types# 竟然无效if(isinstance(add, types.MethodType)): print add.__name__
在这个引申过程中,还发现了一些有意思的现象,不同的function的输出结果不一样:
>>> type(format)<type 'builtin_function_or_method'>>>> type(add)<type 'function'>
更有意思的是,type竟然无法对print进行操作,如下:
>>> type(print) File "<stdin>", line 1 type(print) ^SyntaxError: invalid syntax
那print是什么?
结论
如何判断一个对象是否是方法,本文提供了3种方法,并发现了一些有意思的现象,再问一遍,print是什么?
阅读全文
0 0
- Python判断对象是否是function的三种方法
- js判断对象是否存在的三种方法
- Python判断文件是否存在的三种方法
- Python判断文件是否存在的三种方法
- Python 判断文件是否存在的三种方法
- Python 判断文件是否存在的三种方法
- Python 判断文件是否存在的三种方法
- Python 判断文件是否存在的三种方法
- Python 判断文件是否存在的三种方法
- 判断java方法是否是数字的三种方法总结
- 判断点击view是否是自己想要的view的三种方法
- 22、在JavaScript中,判断是否是function的兼容各个浏览器的方法
- python:判断一个对象是否可迭代 的方法
- 以下是 Java 判断字符串是否为空的三种方法.
- java 判断对象是否是某个类的类型两种方法
- 判断比较两个对象是否是一个对象(equals方法)
- iphone上面判断一个对象是否是某个类的对象的方法
- python中判断文件是否存在的三种方式
- python自然语言处理学习笔记3——词频统计
- 2、从HelloWorld开始C#开发
- mysql 解压版安装及DATA初始化 root用户密码修改
- 简单易懂的softmax交叉熵损失函数求导
- 数据类型
- Python判断对象是否是function的三种方法
- js数组中当Java集合的使用
- String不能被继承
- 数字逻辑电路—全减器的实现
- QPainterPath
- JS学习笔记-函数对象的方法
- C++智能指针与返回局部指针
- SLAM——图优化篇
- C. Sum 数学/规律 2017 ACM-ICPC 亚洲区(西安赛区)网络赛