5.4获取对象信息

Posted soberkkk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.4获取对象信息相关的知识,希望对你有一定的参考价值。

使用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获取对象信息的主要内容,如果未能解决你的问题,请参考以下文章

JS笔记5.3 Date类型 5.4 RegExp类型

试图在 laravel 5.4 上获取非对象错误的属性

试图在 laravel 5.4 中获取非对象的属性

Laravel 5.4 从请求对象重定向获取方法

设置和获取与执行环境相关的信息?

错误记录Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )(代码片段