Difference between DataClass vs NamedTuple vs Object in Python
Data Class: Data Class is a type of class that is used to store data without any functionality. These data classes are just regular classes having the main purpose to store state and data without knowing the constraints and logic behind it. Whenever you create a class that mostly contains attributes and certain properties to deal with the data and its representation.
Example:
Python3
from dataclasses import dataclass
@dataclass
class GeeksArticle():
topic: str
contributor: str
language: str
upvotes: int
article = GeeksArticle( "DataClasses" , "nightfury1" , "Python" , 1 )
print (article)
|
Output:
GfgArticle(topic=’DataClasses’, contributor=’nightfury1’, language=’Python’, upvotes=1)
NamedTuple: The NamedTuple is a class that contains the data like a dictionary format stored under the ‘collections‘ module. It stored the data in a key-value format where each key having mapped to more values. So, we access those data using a specific key or can use the indexes.
Example:
Python3
from collections import namedtuple
Contributor = namedtuple( 'Contributor' , [ 'topic' , 'author' , 'post' ])
C = Contributor( 'Difference between DataClass vs NamedTuple vs Object in Python' ,
'night_fury1' ,
'Technical Content Writer Intern' )
print ( "The Article Topic : " , end = "")
print (C[ 0 ])
print ( "The Article Contributor Name : " , end = "")
print (C.author)
print ( "The Article Contributor Post : " , end = "")
print ( getattr (C, 'post' ))
|
Output:
The Article Topic : Difference between DataClass vs NamedTuple vs Object in Python
The Article Contributor Name : night_fury1
The Article Contributor Post : Technical Content Writer Intern
Object: An object is simply a collection of data (variables) and methods (functions) that act on those data. In other words, we say that Object is an instance of the class.
Example:
Python3
class Gfg:
def __init__( self , topic, contributor):
self .topic = topic
self .contributor = contributor
def myfunc( self ):
print ( "Article: " , self .topic)
print ( "Contributor: " , self .contributor)
g = Gfg( "Difference between DataClass vs NamedTuple vs Object in Python" ,
"nightfury1" )
g.myfunc()
|
Output:
Article: Difference between DataClass vs NamedTuple vs Object in Python
Contributor: nightfury1
Table of difference between DataClass, NamedTuple and Object
|
DataClass
|
NamedTuple
|
Object
|
Creation |
DataClass is slower than others while creating data objects (2.94 µs). |
NamedTuple is the faster one while creating data objects (2.01 µs). |
An object is slower than DataClass but faster than NamedTuple while creating data objects (2.34 µs). |
Read Property |
Equal to Object & faster than NamedTuple while reading the data objects (24.7 ns). |
NamedTuple is slower than others in reading data objects (26.9 ns). |
Equal to DataClass & Faster than NamedTuple (24.7 ns). |
Nested Property |
Faster than others while nesting data objects & their properties (48.1 ns). |
Slower than others in nesting data objects (75.8 ns). |
Faster than NamedTuple but slower than DataClass (52.1 ns). |
Execute Function |
Faster than NamedTuple but slower than objects (829 ns). |
Slower than others in Function Execution (946 ns). |
Fastest in Function execution on data objects (821 ns). |
Size |
56 bytes |
80 bytes |
56 bytes |
Last Updated :
01 Aug, 2020
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...