函数对象支持任意属性的原因是,在我们添加该功能之前,有几个框架(例如,解析器生成器框架)正在滥用函数文档字符串(以及函数对象的其他属性),以隐藏对它们至关重要的每个函数的信息-
显而易见,通过示例证明了将任意命名属性与功能对象进行这种关联的需要,即直接用语言支持它们,而不是用粗俗的方式(例如,滥用文档字符串)来支持它们,这是显而易见的。
为了支持任意实例属性,类型必须为它的每个实例提供一个
__dict__-对于函数(无论如何都不是小对象)来说没什么大不了的,但是对于其他 打算
是小对象的对象来说,则可能不大。通过使
object类型尽可能轻,并
__slots__尽可能避免
__dict__在的子类型中出现每个实例
object,我们竭尽所能地支持小型的专用“值”类型。



