Python dir()

The dir() method is an inbuilt function in Python which returns all the valid list of attributes and methods of any object. (functions, dict, list, string, tuple etc.)

dir() Syntax 

The syntax of the dir() method is:

dir([object])

dir() Parameters

The dir() method takes only one argument as an object.

  • object(optional) – The object which you want to see the valid attributes.

dir() Return Value

dir() method returns the valid list of attributes for a given object. 

The dir() function behaves differently for different types of objects. It aims to return the relevant information rather than complete information.

  • For Class Objects – Returns all the names of valid attributes and the base attributes of the class object.
  • For Modules or Library – It tries to return a list of names of all the attributes in that module. 
  • If no parameter is passed to the dir() method, it returns a list of names in the current local scope. 

Example 1: How dir() works?

The below example provides all the valid attributes of a list object.

# dir() method for list
lst_numbers = [1, 2, 3, 4, 5]
print(dir(lst_numbers))

Output

['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__',
 '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', 
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', 
'__init__', '__init_subclass__', '__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']

Example 2: When no parameters are passed to dir() method with and without importing external libraries.

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

  • In the first case, we have not imported any module, and dir() methods return the default names.
  • In the second case, we have imported two modules(random and math), and the dir() method returns these module names as it is added to the local namespace.

# Python3 code to demonstrate dir()
# when no parameters are passed to dir()
 
# Note that we have not imported any modules
print(dir())


# when modules are imported
import random
import math
 
# in this case dir() returns the module names added to the localnamespace
print(dir())

Output

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__',
 '__loader__', '__name__', '__package__', '__spec__']


['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__',
 '__loader__', '__name__', '__package__', '__spec__', 'math', 'random']

Example 3: When a module object is passed as a parameter?


# Python3 code to demonstrate dir()
# when module objects are passed to dir()
 
import random
import math
 
print(dir(random))
print(dir(math))

Output

['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST',
 'SystemRandom', 'TWOPI', '_Sequence', '_Set', '__all__', '__builtins__',
 '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__',
 '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp',
 '_floor', '_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin',
 '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate',
 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits',
 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes',
 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle',
 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']



['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh',
 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos',
 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs',
 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf',
 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma',
 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow',
 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau',
 'trunc', 'ulp']

Example 4: dir() on User-defined Object


# Python3 code to demonstrate dir()
# on user defined object
 
class Employee:
    # Function __dir()___ which list all
    # the base attributes to be used.
  def __dir__(self):
    return ['Id', 'FirstName', 'LastName', 'Salary','JoiningDate']
    
# user-defined object of class Employee
emp = Employee()

# listing out the dir() method for the userdefined object
print(dir(emp))

Output

['FirstName', 'Id', 'JoiningDate', 'LastName', 'Salary']

Conclusion 

The dir() function will help mainly in debugging the application. In the case of the large project, it will be really useful for developers when handling a lot of classes and functions separately, and dir() will list out all the attributes of the object passed to it.  

Leave a Reply

Your email address will not be published. Required fields are marked *

Sign Up for Our Newsletters

Subscribe to get notified of the latest articles. We will never spam you. Be a part of our ever-growing community.

You May Also Like