5.4、获取对象信息

使用type

5.4、获取对象信息

 

 

 5.4、获取对象信息

使用isinstance()

 

 

 5.4、获取对象信息

 

 5.4、获取对象信息是不是其中一种类型

 

总是优先使用isinstance()判断类型,可以将指定类型及其子类“一网打尽”。

 使用dir()

如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法:

 

>>> dir('ABC')
['__add__', '__class__','__len__',..., '__subclasshook__', 'capitalize', 'casefold',..., 'zfill']

 类似__xxx__的属性和方法在Python中都是有特殊用途的,比如__len__方法返回长度。在Python中,如果你调用len()函数试图获取一个对象的长度,实际上,在len()函数内部,它自动去调用该对象的__len__()方法,所以,下面的代码是等价的:

 len('ABC')

'ABC'.__len__()

5.4、获取对象信息

 

 仅仅把属性和方法列出来是不够的,配合getattr()setattr()以及hasattr(),我们可以直接操作一个对象的状态:

class MyObject(object):
    def __init__(self):
        self.x=9
    def power(self):
        return self.x*self.x
obj=MyObject()
obj.power()

测试该对象的属性:

5.4、获取对象信息

 

 5.4、获取对象信息

 

 测试该对象的方法:

5.4、获取对象信息

 

 什么时候使用getattr()setattr()以及hasattr()

def readImage(fp):
    if hasattr(fp, 'read'):
        return readData(fp)
    return None

假设我们希望从文件流fp中读取图像,我们首先要判断该fp对象是否存在read方法,如果存在,则该对象是一个流,如果不存在,则无法读取。hasattr()就派上了用场。

 

上一篇:489B - BerSU Ball


下一篇:hasattr() getattr() setattr()