dir(re.compile(pattern))
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
getattrbuilt-in function. As the user can reimplement__getattr__, suddenly allowing any kind of attribute, there is no possible generic way to generate that list. Thedirfunction 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
inspectmodule determine the class methods, methods or functions.