关于dir()函数

2019年11月4日 / 124次阅读 / Last Modified 2021年4月1日
内置函数

python的dir()函数,主要用来显示各类对象的属性名称,交互式的python使用是其主要的应用场景。本文尽力多介绍一些dir()函数的功能细节。

当dir()函数没有参数时,返回的时当前namespace中的名字List,如果有参数(对象,废话,python中一切都是对象),就尝试返回对象的所有属性名称。注意,这里时尝试,有可能返回的结果并不准确,比如当__getattr()__被重写的化。

并不是所有的属性都可以用dir函数获取,比如__dict__属性,要使用vars()函数查看。

针对不同的对象,dir()函数的机制稍有不同:

  • 如果是模块对象,返回模块所有属性的名称;
  • 如果是类型对象,返回类型对象的所有属性的名称,包含所有此类型基类的属性名称;
  • 如果一般实例对象(非以上两类),返回所有实例属性的名称,实例对应的类名称,以及类的基类的属性名称;

基本上,只要是可以访问的属性,就会尽力都包含在dir()函数返回的List中。

>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'testdict', 'tt']
>>>
>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>>
>>> dir(testdict)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'cls']
>>>
>>> dir(tt)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'cls', 'value']

一般在代码中,貌似很难用到dir()函数,反正我还从没有这样用过。

-- EOF --

本文链接:https://www.pynote.net/archives/1446

留言区

《关于dir()函数》有3条留言

您的电子邮箱地址不会被公开。 必填项已用*标注

  • 麦新杰

    dir() does not list the names of built-in functions and variables. If you want a list of those, they are defined in the standard module builtins:

    >>> import builtins
    >>> dir(builtins)
    
     [回复]

  • 麦新杰

    The built-in function dir() is used to find out which names a module defines. It returns a sorted list of strings. [回复]

  • 麦新杰

    You can use dir() without arguments to get the list of names in the current Python scope. If you call dir() with an argument, then the function attempts to return a list of valid attributes for that object. [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top