Python dir()

The dir() method tries to return a list of valid attributes of the object.

The syntax of dir() is:

dir([object])

dir() Parameters

The dir() takes maximum of one object.

  • object (optional) - dir() attempts to return all attributes of this object.

Return Value from dir()

The dir() tries to return a list of valid attributes of the object.

  • If the object has __dir__() method, the method will be called and must return the list of attributes.
  • If the object doesn't have __dir__() method, this method tries to find information from the __dict__ attribute (if defined), and from type object. In this case, the list returned from dir() may not be complete.

If object is not passed to the dir() method, it returns the list of names in the current local scope.


Example 1: How dir() works?

number = [1, 2, 3]
print(dir(number))

print('\nReturn Value from empty dir()')
print(dir())

When you run the program, the output will be:

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

Return Value from empty dir()
['__builtins__', 'number']

Example 2: dir() on User-defined Object

class Person:
  def __dir__(self):
    return ['age', 'name', 'salary']
    

teacher = Person()
print(dir(teacher))

When you run the program, the output will be:

['age', 'name', 'salary']