最近在看python django如何加载settings.py时,遇到如下函数问题,dir(参数)函数,其中gloable_settings.py为某个包下的模块。
通过查阅资料得知dir(object)作用:
如果没有参数,则返回当前局部作用域的属性,如果有参数,则返回相应的object的各种属性。
如果object包含__dir__()方法时,则调用__dir__()方法,并返回相应的属性。如果object实现了自定义的__getattr__或者__getattribute__()函数,则会使得dir()描述他们的属性时的行为发生改变。
如果object没有提供__dir__()方法,dir()会最大程度的收集object的属性信息。列表结果并不是完整的,当object有自定义的__getattr__()方法时,其返回的结果可能并不准确。
如果dir带有参数的话,会根据参数类型的不同返回不同的结果列表:
1、如果object是一个模块,就像上面遇到的,返回的列表包括模块内各种属性的名字。
2、如果object如果是一个类,则返回的列表包括类的属性,以及它的基类的属性
返回的结果是列表形式,而且以字母进行排序了的列表。
>>> import struct >>> dir() # show the names in the module namespace ['__builtins__', '__doc__', '__name__', 'struct'] >>> dir(struct) # show the names in the struct module ['Struct', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Shape(object): def __dir__(self): return ['area', 'perimeter', 'location'] >>> s = Shape() >>> dir(s) ['area', 'perimeter', 'location']
本文探讨了Python中的dir()函数,特别是在Django框架中如何使用。dir()函数可以用于查看当前局部作用域的属性,或获取对象的属性信息。当应用于模块、类等不同类型的对象时,它会返回不同类型的属性列表。如果对象有自定义的__getattr__()或__getattribute__(),dir()的输出可能会受到影响。返回的结果是按字母排序的列表。
7082

被折叠的 条评论
为什么被折叠?



