Open In App

vars() function in Python

Improve
Improve
Like Article
Like
Save
Share
Report

vars() method takes only one parameter and that too is optional. It takes an object as a parameter which may be a module, a class, an instance, or access the __dict__ attribute in Python. In this article, we will learn more about vars() function in Python.

Python vars() Function Syntax 

Syntax: vars(object)

Parameters

  • object – can be a module, class, instance, or any object having the __dict__ attribute

Return

  • __dict__ attribute of the given object.
  • methods in the local scope when no arguments are passed
  • TypeError: if the object passed doesn’t have the __dict__ attribute

vars() Function in Python

The method returns the __dict__ attribute for a module, class, instance, or any other object if the same has a __dict__ attribute. If the object fails to match the attribute, it raises a TypeError exception. Objects such as modules and instances have an updatable __dict__ attribute however, other objects may have written restrictions on their __dict__ attributes. vars() acts like the locals() method when an empty argument is passed which implies that the local dictionary is only useful for reads since updates to the local dictionary are ignored. 

How vars() Function in Python works?

In the given code, we are creating a class Geeks and we have created three attributes. We have created an object of class Geeks() and we printed the dict with vars() function in Python.

Python3




class Geeks:
  def __init__(self, name1 = "Arun",
               num2 = 46, name3 = "Rishab"):
    self.name1 = name1
    self.num2 = num2
    self.name3 = name3
 
GeeksforGeeks = Geeks()
print(vars(GeeksforGeeks))


Output

{'name1': 'Arun', 'num2': 46, 'name3': 'Rishab'}

Python vars() without any Arguments

In this example, we are using vars() without any arguments.

Python3




# vars() with no argument
print (vars())


Output

{'__name__': '__main__', '__doc__': None, '__package__': None,

'__loader__': <class '_frozen_importlib.BuiltinImporter'>,

'__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}

Python vars() with Custom Object

In the given example, we have defined the Geeks class with methods loc(), code(), and prog(). The loc() method returns local variables using locals(), code() returns object attributes using vars(), and prog() returns class attributes using vars(self)

Python3




class Geeks(object):
    def __init__(self):
        self.num1 = 20
        self.num2 = "this is returned"
 
    def __repr__(self):
        return "Geeks() is returned"
 
    def loc(self):
        ans = 21
        return locals()
     
    # Works same as locals()
    def code(self):
        ans = 10
        return vars()
 
    def prog(self):
        ans = "this is not printed"
        return vars(self)
     
 
if __name__ == "__main__":
    obj = Geeks()
    print (obj.loc())
    print (obj.code())
    print (obj.prog())


Output

{'self': Geeks() is returned, 'ans': 21}
{'self': Geeks() is returned, 'ans': 10}
{'num1': 20, 'num2': 'this is returned'}







Python vars() without __dict__ Attribute

In the given example, we have attributes that are not dict that’s why when we used the var() method, it shows a type error.

Python3




print(vars('Geeks for geeks'))
print(vars(123.45))


Output

TypeError: vars() argument must have __dict__ attribute


Last Updated : 13 Nov, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads