python学习笔记 获取对象信息
2016-11-07 11:51
567 查看
当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?
首先,我们来判断对象类型,使用
基本类型都可以用
如果一个变量指向函数或者类,也可以用
但是
Python把每种type类型都定义好了常量,放在
最后注意到有一种类型就叫
对于class的继承关系来说,使用type()就很不方便。我们要判断class的类型,可以使用
我们回顾上次的例子,如果继承关系是:
那么,
然后,判断:
没有问题,因为
再判断:
实际类型是Dog的
能用
并且还可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode:
由于
类似
我们自己写的类,如果也想用
使用type()
首先,我们来判断对象类型,使用type()函数:
基本类型都可以用
type()判断:
>>> type(123) <type 'int'> >>> type('str') <type 'str'> >>> type(None) <type 'NoneType'>
如果一个变量指向函数或者类,也可以用
type()判断:
>>> type(abs) <type 'builtin_function_or_method'> >>> type(a) <class '__main__.Animal'>
但是
type()函数返回的是什么类型呢?它返回type类型。
Python把每种type类型都定义好了常量,放在
types模块里,使用之前,需要先导入:
>>> import types >>> type('abc')==types.StringType True >>> type(u'abc')==types.UnicodeType True >>> type([])==types.ListType True >>> type(str)==types.TypeType True
最后注意到有一种类型就叫
TypeType,所有类型本身的类型就是
TypeType,比如:
>>> type(int)==type(str)==types.TypeType True
使用isinstance()
对于class的继承关系来说,使用type()就很不方便。我们要判断class的类型,可以使用isinstance()函数。
我们回顾上次的例子,如果继承关系是:
object -> Animal -> Dog -> Husky
那么,
isinstance()就可以告诉我们,一个对象是否是某种类型。先创建3种类型的对象:
>>> a = Animal() >>> d = Dog() >>> h = Husky()
然后,判断:
>>> isinstance(h, Husky) True
没有问题,因为
h变量指向的就是Husky对象。
再判断:
>>> isinstance(h, Dog) True
实际类型是Dog的
d也是Animal类型:
>>> isinstance(d, Dog) and isinstance(d, Animal) True
能用
type()判断的基本类型也可以用
isinstance()判断:
>>> isinstance('a', str) True >>> isinstance(u'a', unicode) True >>> isinstance('a', unicode) False
并且还可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode:
>>> isinstance('a', (str, unicode)) True >>> isinstance(u'a', (str, unicode)) True
由于
str和
unicode都是从
basestring继承下来的,所以,还可以把上面的代码简化为:
>>> isinstance(u'a', basestring) True
类似
__xxx__的属性和方法在Python中都是有特殊用途的,比如
__len__方法返回长度。在Python中,如果你调用
len()函数试图获取一个对象的长度,实际上,在
len()函数内部,它自动去调用该对象的
__len__()方法,所以,下面的代码是等价的:
>>> len('ABC') 3 >>> 'ABC'.__len__() 3
我们自己写的类,如果也想用
len(myObj)的话,就自己写一个
__len__()方法:
>>> class MyObject(object): ... def __len__(self): ... return 100 ... >>> obj = MyObject() >>> len(obj) 100
相关文章推荐
- 【Python】学习笔记——-7.4、获取对象信息
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- 【Python学习笔记】面向对象编程:获取对象信息
- Python学习笔记 --- python获取linux脚本的打印信息
- Python学习笔记15:标准库之获取进程信息(os包)
- 学习笔记_获取对象信息
- python 学习笔记 12 -- 写一个脚本获取城市天气信息
- python学习——获取对象信息
- python 学习笔记 12 -- 写一个脚本获取城市天气信息
- j2me学习笔记【2】——利用Display类的isColor()方法获取设备是否支持彩色的信息
- Dive Into Python 学习记录3-对获取某文件夹下MP3文件信息的代码构成分析
- python学习之获取当前时间的方法(可以任意取时间的任何一个对象显示)
- python 学习笔记 对象(4)
- Python 学习笔记【文件对象】
- WinApi学习笔记-获取电脑中磁盘信息
- Python学习笔记 03 Python对象
- Web入侵安全测试与对策学习笔记之(二)——获取目标信息之淘金
- Dive in Python学习笔记五:对象和面向对象
- java 数字证书信息的获取实例-java学习笔记(2)
- python笔记(五) - 获取对象的引用