【发布时间】:2015-04-01 14:30:35
【问题描述】:
我有一个实现__dir__ 方法的类。但是,我并不完全确定 dir API 的一些细节。
A:__dir__ 真的需要返回一个列表吗?我的实现是使用set 来避免两次列出属性,我是否需要在返回之前将其转换为列表?从documentation 我猜它必须是一个列表:
如果对象有一个名为dir()的方法,这个方法会被调用 并且必须返回属性列表。
但是,在某些时候不会返回列表中断功能吗?
B:结果需要排序吗?这里的文档有点模棱两可:
结果列表按字母顺序排序。
这是否意味着,调用内置的dir 会自动对__dir__ 返回的数据进行排序,还是意味着dir 期望来自__dir__ 的排序数据?
编辑:顺便说一句,我的问题包括 Python 2(2.6 和 2.7)和 3(3.3、3.4)。
【问题讨论】: