built in - Implementing `__dir__` in Python: Does it need to return a list and does the list need to be sorted? -
i have class implements __dir__
method. however, not entirely nitty gritty details of dir
api.
a: required __dir__
returns list? implementation using set
avoid listing attributes twice, need convert list before returning? documentation guess has list:
if object has method named dir(), method called , must return list of attributes.
however, not returning list break functionality @ point?
b: result need sorted? documentation bit ambiguous here:
the resulting list sorted alphabetically.
does mean, calling built-in dir
automatically sorts data returned __dir__
or mean dir
expects sorted data __dir__
?
edit: btw, question encompasses python 2 (2.6 , 2.7) , 3 (3.3, 3.4).
under python 2.7.3, answers are:
a: yes, must list:
>>> class f: ... def __dir__(self): ... return set(['1']) ... >>> dir(f()) traceback (most recent call last): file "<stdin>", line 1, in <module> typeerror: __dir__() must return list, not set
b: no, dir
sort it.
>>> class g: ... def __dir__(self): ... return ['c','b','a'] ... >>> dir(g()) ['a', 'b', 'c']
Comments
Post a Comment