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