Last Updated on June 30, 2023 by Mayank Dham
Python is an object-oriented programming language and because of that, we have to deal with objects and classes in many scenarios. we have to work according to the object’s structure and available functionality but to know that we must have the knowledge of class and this is a long process to provide the solution or short solution of this process we have a dir function in python which tells us about the structure and available functionality of the object.
Dir Function in Python
The dir() function is a built-in function in Python that returns a list of names in the current local scope or a specified object. It is used to introspect Python objects and find out what methods or attributes they have.
When called without any arguments, the dir function in python returns a list of names defined in the current local scope, including variable names, function names, and import names.
When called with an object as an argument, dir() returns a list of attributes and methods associated with that object. This can be useful for exploring the capabilities of an object, particularly if it is a custom object defined by a third-party library.
Dir function in python is a powerful introspection tool that can be used to explore the names and capabilities of objects in both the current scope and external libraries.**
Syntax of Dir Function in Python
The dir function in python has the following syntax:
dir({object})
We just have to pass the object.
Parameters of Dir Function in Python
The dir function in python can work without passing any parameter but however, but we can pass one parameter.
- Object: this is optional, To learn about all the specified names in the namespace, we are not obliged to supply any arguments. But, you must supply it as a parameter in order to discover the characteristics or qualities of a certain object. This object might be a module, function, list, string, dictionary, etc.
Return Type of Dir Function in Python
The dir() function in Python returns a list of the names (attributes and methods) defined in the specified object.
The return type of the dir() function is always a list (of strings) containing the names of the attributes and methods of the specified object.
The passed object can be of different types as shown below:
- A list of names with all the acceptable characteristics and base attributes is returned if the input object is a class.
- The names of all the attributes that are contained in that module are returned if the input object is a module or a library object.
- The function, however, just returns a list of all the names in the current local scope if no inputs are sent to it.
Examples of Dir Functions in Python
In this section, we will look at various examples of dir functions in python with different types of objects passed like list, tuple, set, and user-defined class.
Example 1 of the Dir Function with a List
Below is the cod implementation of the above-mentioned example.
number1 = [21, 32, 43] print(dir(number1)) number2 = [ ] print(dir(number2))
Output
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
Explanation
In the above example, we have used the dir function in python which returns all the valid attributes of the given lists number1 and number2
Application
Example 2 Dir Functions in Python with Set
Below is the code and implementation of the above-mentioned example of a dir function in python.
number = {22, 35, 48, 21} print(dir(number)) number1 =[ ] print(dir(number1))
Output
['__and__', '__class__', '__cmp__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
Explanation
In the above example, we have used a set to pass in the dir function in python and then it shows all the available attributes of number and number1.
Example 3 Dir Functions in Python with Tuple
Below is the code and implementation of the above mentioned example of a dir function in python.
number = (22, 30, 41, 56) print(dir(number)) number1 =[] print(dir(number1))
Output
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
Explanation
In the above example, we used the tuple with the dir function in python and get the corresponding result which returns all the valid results for the tuples in the code.
Example 4 Dir Functions in Python with User-Defined Class
Now we will discuss the code and implementation of the above-mentioned example of a dir function in python.
class Employee: def __dir__(self): return ['age', 'name', 'salary','gender'] Manager = Employee() print(dir(Manager))
Output
['age', 'gender', 'name', 'salary']
Explanation
In this example, we have used a user-defined class in the dir function in python the user-defined class is Employee and the object is Manger.
We have passed the age, gender, name, and salary as the attributes so dir will use them for output.
Applications of Dir Function in Python
Here are some common applications of the dir function in Python:
-
Exploring Module Contents: You can use the dir() function to explore the contents of a module. It provides a convenient way to discover the available functions, classes, constants, and other attributes defined within a module. This is particularly useful when working with third-party modules or unfamiliar libraries, as it helps you understand what functionalities are provided.
-
Inspecting Object Attributes: The dir() function allows you to inspect the attributes and methods associated with an object. By passing an object as an argument to dir(), you can retrieve a list of valid attributes and methods specific to that object. This is useful for understanding the structure and capabilities of objects, whether they are built-in objects, custom-defined classes, or instances of classes.
-
Dynamic Attribute Access: The dir() function can be used in combination with dynamic attribute access to programmatically work with objects. After obtaining the list of attributes and methods using dir(), you can dynamically access and manipulate those attributes based on your program’s logic. This provides flexibility and adaptability in handling objects at runtime.
-
Discovering Available Methods: When working with objects or modules, you can use dir() to discover the available methods that can be invoked. This is particularly useful when you want to interact with an object or module and need to identify the appropriate methods to use for a particular task. By inspecting the available methods, you can select the most suitable one for your needs.
-
Introspection and Debugging: The dir() function is an essential tool for introspection and debugging purposes. It allows you to examine the structure of objects and modules, helping you understand their internal workings and diagnose issues. By exploring the available attributes and methods, you can gain insights into the object’s behavior and identify potential problems.
-
Writing Generic Code: The dir() function can be utilized in writing generic and reusable code. By dynamically retrieving the attributes and methods of an object, you can create more flexible and adaptable functions that can operate on a wide range of objects. This enhances code modularity and promotes code reusability.
Frequently Asked Questions Related to Dir Function in Python
Q1: What does the dir() function return?
A1: The dir() function returns a sorted list of strings containing the names of valid attributes and methods associated with the provided object or module.
Q2: Can I use the dir() function on built-in Python objects?
A2: Yes, you can use the dir() function on built-in objects, such as strings, lists, dictionaries, and modules, to explore their attributes and methods.
Q3: How can I filter the results obtained from the dir() function?
A3: You can filter the results by applying additional conditions or using techniques like list comprehension. For example, you can filter the list to exclude attributes that start with an underscore (_) or those that are callable (methods).
Q4: Can the dir() function be used with custom-defined classes?
A4: Yes, the dir() function can be used with custom-defined classes. It allows you to explore the attributes and methods defined within a class, helping you understand its structure and capabilities.
Q5: Does the dir() function provide information about inherited attributes and methods?
A5: Yes, the dir() function provides information about inherited attributes and methods. It lists all the valid attributes and methods associated with an object, including those inherited from its parent classes.
Q6: Can I use the dir() function to explore third-party modules?
A6: Yes, the dir() function is particularly useful for exploring third-party modules. It allows you to discover the available functionalities provided by the module and understand how to utilize them in your code.