• 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()就派上了用场。
  • 相关阅读:
    Vue 项目目录结构分析
    Vue 项目环境搭建
    Vue 组件
    Vue 指令
    Vue 实例成员
    Django 静态文件
    MySQL 索引详解
    Django 请求生命周期
    18. 4Sum (JAVA)
    16. 3Sum Closest (JAVA)
  • 原文地址:https://www.cnblogs.com/soberkkk/p/12634534.html
Copyright © 2020-2023  润新知