vars() function in Python (original) (raw)

Last Updated : 13 Nov, 2023

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

**Return

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

**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 ()

`` 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