zoukankan      html  css  js  c++  java
  • 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()就派上了用场。
  • 相关阅读:
    ACM-ICPC SouthWestern Europe Regional Contest 2017题解
    Ubuntu系统Anaconda下载安装与切换源教程
    HZNUOJ开发者学习计划
    Codeforces Round #473 (Div. 2)
    正方教务系统自动评教代码
    QQ空间自动点赞
    妈妈我要当全栈工程师
    基于Koa开发学生导师管理系统
    SSH框架实现登陆界面
    谈ACM生涯总结的经验
  • 原文地址:https://www.cnblogs.com/soberkkk/p/12634534.html
Copyright © 2011-2022 走看看