does not return pattern as one of the lists's elements. Namely it returns:
['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner', 'search', 'split', 'sub', 'subn']
According to the manual, it is supposed to contain
the object's attributes' names, the names of its class's attributes, and recursively of the attributes of its class's base classes.
It says also that
The list is not necessarily complete.
Is there a way to get the complete list? I always assumed that dir returns a complete list but apparently it does not...
Also: is there a way to list only attributes? Or only methods?
Edit: this is actually a bug in python -> supposedly it is fixed in the 3.0 branch (and perhaps also in 2.6)
For the complete list of attributes, the short answer is: no. The problem is that the attributes are actually defined as the arguments accepted by the
getattr built-in function. As the user can reimplement
__getattr__, suddenly allowing any kind of attribute, there is no possible generic way to generate that list. The
dir function returns the keys in the
__dict__ attribute, i.e. all the attributes accessible if the
__getattr__ method is not reimplemented.
For the second question, it does not really make sense. Actually, methods are callable attributes, nothing more. You could though filter callable attributes, and, using the
inspect module determine the class methods, methods or functions.
That is why the new
__dir__() method has been added in python 2.6