码迷,mamicode.com
首页 > 其他好文 > 详细

5.4、获取对象信息

时间:2020-04-04 22:52:06      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:获取对象   字符   cti   存在   属性   size   代码   判断   type   

使用type

技术图片

 

 

 技术图片

使用isinstance()

 

 

 技术图片

 

 技术图片是不是其中一种类型

 

总是优先使用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__()

技术图片

 

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

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

测试该对象的属性:

技术图片

 

 技术图片

 

 测试该对象的方法:

技术图片

 

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

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

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

 

5.4、获取对象信息

标签:获取对象   字符   cti   存在   属性   size   代码   判断   type   

原文地址:https://www.cnblogs.com/soberkkk/p/12634534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!