Python dir()内置函数 --返回对象的属性列表

dir() 函数用于返回一个对象的属性列表。如果没有实参,则返回当前本地作用域中的名称列表;如果有实参,它会尝试返回该对象的有效属性列表。返回的列表按字母排序

如果对象有一个名为 __dir__() 的方法,那么该方法将被调用,并且必须返回一个属性列表;如果对象不提供 __dir__(),该方法将最大限度地收集参数信息

格式及参数

1
dir([object])

object:一个对象,可以是模块、类型、类对象、变量

参考资料

实例(python3.8.8)

无实参

1
2
3
4
import re
import time

print(dir())

输出

1
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 're', 'time']

有实参

如果对象是模块对象,则列表包含模块的属性名称

1
2
3
import re

print(dir(re))

输出

1
['A', 'ASCII', 'DEBUG', 'DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE', 'Match', 'Pattern', 'RegexFlag', 'S', 'Scanner', 'T', 'TEMPLATE', 'U', 'UNICODE', 'VERBOSE', 'X', '_MAXCACHE', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', '_cache', '_compile', '_compile_repl', '_expand', '_locale', '_pickle', '_special_chars_map', '_subx', 'compile', 'copyreg', 'enum', 'error', 'escape', 'findall', 'finditer', 'fullmatch', 'functools', 'match', 'purge', 'search', 'split', 'sre_compile', 'sre_parse', 'sub', 'subn', 'template']

如果对象是类型或类对象,则列表包含它们的属性名称,并且递归查找所有基类的属性

1
2
3
4
5
6
7
8
9
10
class yu():
def __dir__(self):
return ['雨园', '博客', '1314']

yu = yu()
print(dir(yu))

''' 输出
['1314', '博客', '雨园']
'''

其它情况下,列表包含对象的属性名称,它的类属性名称,并且递归查找它的类的所有基类的属性