函数内省
除了__doc__,函数对象还有很多属性。使用dir函数可以探知factorial具有下述属性:
| |
['__annotations__',
'__call__',
'__class__',
'__closure__',
'__code__',
'__defaults__',
'__delattr__',
'__dict__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__get__',
'__getattribute__',
'__globals__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__kwdefaults__',
'__le__',
'__lt__',
'__module__',
'__name__',
'__ne__',
'__new__',
'__qualname__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__']
其中大多数属性是Python对象共有的
与用户定义的常规类一样,函数使用__dict__属性存储赋予它的用户属性,这相当于一种基本形式的注解。一般来说,为函数随意赋予属性不是很常见的做法,但是Django框架是这样做的。Django文档中举了下述示例,把short_description属性赋予一个方法,Django管理后台使用这个方法时,会在记录列表中出现指定的描述文本:
| |
| |
['__annotations__',
'__call__',
'__closure__',
'__code__',
'__defaults__',
'__get__',
'__globals__',
'__kwdefaults__',
'__name__',
'__qualname__']