• python获取对象的信息


    Types

    判断基本数据类型可以直接写intstr等,但如果要判断一个对象是否是函数怎么办?可以使用types模块中定义的常量。

    >>> import types
    >>> def fn():
    ...     pass
    ...
    >>> type(fn)==types.FunctionType
    True
    >>> type(abs)==types.BuiltinFunctionType
    True
    >>> type(lambda x: x)==types.LambdaType
    True
    >>> type((x for x in range(10)))==types.GeneratorType
    True

    isinstance

    对于class的继承关系来说,使用type()就很不方便。我们要判断class的类型,可以使用isinstance()函数。能用type()判断的基本类型也可以用isinstance()判断。

    >>> isinstance('a', str)
    True
    >>> isinstance(123, int)
    True
    >>> isinstance(b'a', bytes)
    True

    dir

    如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list。

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

    紧接着,可以测试该对象的属性:

    >>> hasattr(obj, 'x') # 有属性'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
    

    也可以获得对象的方法:

    >>> hasattr(obj, 'power') # 有属性'power'吗?
    True
    >>> getattr(obj, 'power') # 获取属性'power'
    <bound method MyObject.power of <__main__.MyObject object at 0x10077a6a0>>
    >>> fn = getattr(obj, 'power') # 获取属性'power'并赋值到变量fn
    >>> fn # fn指向obj.power
    <bound method MyObject.power of <__main__.MyObject object at 0x10077a6a0>>
    >>> fn() # 调用fn()与调用obj.power()是一样的
    81
    

  • 相关阅读:
    h5手机页面注册处理(短信验证)
    jq倒计时
    Unity实现Android端视频播放
    Unity中自定义扩展方法
    UGUI中粒子特效与UI的遮挡问题
    Unity中各种格式计时器
    Unity中锚点的动态设置
    unity中调试模型时unity崩溃问题
    具体分析UGUI中RectTransform
    unity中加载场景不销毁以及切换场景重复实例化
  • 原文地址:https://www.cnblogs.com/arxive/p/5652846.html
Copyright © 2020-2023  润新知