• python 获取对象信息


    判断对象类型,使用type()函数

    判断一个对象是否是函数
    使用types模块中定义的常量:
    >>> import types
    >>> type(abs)==types.BuiltinFunctionType
    True
    >>> type(lambda x: x)==types.LambdaType
    True
    >>> type((x for x in range(10)))==types.GeneratorType
    True

    对于class的继承关系
    判断class的类型,可以使用isinstance()函数。

    继承关系:
    object -> Animal -> Dog -> Husky
    >>> h = Husky()
    然后,判断:
    >>> isinstance(h, Husky)
    True
    >>> isinstance(h, Dog)
    True
    h虽然自身是Husky类型,但由于Husky是从Dog继承下来的,所以,h也还是Dog类型

    基本类型也可以用isinstance()判断:
    >>> isinstance('a', str)
    True
    >>> isinstance(123, int)
    True
    判断一个变量是否是某些类型中的一种
    >>> isinstance([1, 2, 3], (list, tuple))
    True

    获得一个对象的所有属性和方法,可以使用dir()函数

    调用len()函数试图获取一个对象的长度,
    实际上,在len()函数内部,它自动去调用该对象的__len__()方法
    下面的代码是等价的:
    >>> len('ABC')
    3
    >>> 'ABC'.__len__()
    3

    测试对象的属性:
    >>> class MyObject(object):
    ... def __init__(self):
    ... self.x = 9
    ... def power(self):
    ... return self.x * self.x
    ...
    >>> obj = MyObject()

    >>> hasattr(obj, 'x') # 对象obj有属性'x'吗?
    True
    >>> obj.x
    9
    >>> hasattr(obj, 'y') # 有属性'y'吗?
    False
    >>> setattr(obj, 'y', 19) # 设置一个属性'y'
    >>> hasattr(obj, 'y') # 有属性'y'吗?
    True
    >>> getattr(obj, 'y') # 获取属性'y'
    19
    >>> obj.y # 获取属性'y'
    19
    >>> getattr(obj, 'z', 404) # 获取属性'z',如果不存在,返回默认值404
    404


    假设希望从文件流fp中读取图像,首先要判断该fp对象是否存在read方法,
    如果存在,则该对象是一个流,如果不存在,则无法读取
    def readImage(fp):
    if hasattr(fp, 'read'):
    return readData(fp)
    return None

    朝闻道
  • 相关阅读:
    北京联通光猫WO-36(HG220GS-U)改为桥接模式
    使用DataGrip导入数据
    Spring知识点
    mybatis-generator
    项目中mybatis连接mysql常见问题
    Spring AOP
    Volatile
    Redis知识点
    Spring IOC
    Observer模式
  • 原文地址:https://www.cnblogs.com/wander-clouds/p/8458041.html
Copyright © 2020-2023  润新知