美文网首页
Python进阶 对象自省

Python进阶 对象自省

作者: FicowShen | 来源:发表于2018-06-13 12:02 被阅读3次



    自省(introspection),在计算机编程领域里,是指在运行时来判断一个对象的类型的能力。
    它是Python的强项之一。Python中所有一切都是一个对象,而且我们可以仔细勘察那些对象。
    Python还包含了许多内置函数和模块来帮助我们。


    dir

    dir用于自省的最重要的函数之一。
    它返回一个列表,列出了一个对象所拥有的属性和方法。

    my_list = [1, 2, 3]
    dir(my_list)
    # Output: ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
    # '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
    # '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__',
    # '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__',
    # '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__',
    # '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__',
    # '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop',
    # 'remove', 'reverse', 'sort']
    

    上面的自省给了我们一个列表对象的所有方法的名字。
    当你没法回忆起一个方法的名字,这会非常有帮助。
    如果我们运行dir()而不传入参数,那么它会返回当前作用域的所有名字。

    dir()
    # ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'my_list']
    

    type和id



    type函数返回一个对象的类型。

    print(type(''))
    # Output: <type 'str'>
    
    print(type([]))
    # Output: <type 'list'>
    
    print(type({}))
    # Output: <type 'dict'>
    
    print(type(dict))
    # Output: <type 'type'>
    
    print(type(3))
    # Output: <type 'int'>
    



    id()函数返回任意不同种类对象的唯一ID。

    name = "Yasoob"
    print(id(name))
    # Output: 139972439030304
    

    inspect模块

    inspect模块也提供了许多有用的函数,来获取活跃对象的信息。

    import inspect
    print(inspect.getmembers(str))
    # Output: [('__add__', <slot wrapper '__add__' of ... ...
    

    相关文章

      网友评论

          本文标题:Python进阶 对象自省

          本文链接:https://www.haomeiwen.com/subject/hikjeftx.html