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

filter_none

edit
close

play_arrow

link
brightness_4
code

# Importing dataclass module 
from dataclasses import dataclass 
  
# Annotation
@dataclass
  
# Class with attributes
class GeeksArticle(): 
    """A class for holding an article content"""
    
    # Attributes Declaration 
    # using Type Hints 
    topic: str
    contributor: str
    language: str
    upvotes: int
    
# A DataClass object 
article = GeeksArticle("DataClasses", "nightfury1", "Python", 1)
  
print(article)

chevron_right


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

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python script to demonstrate namedtuple()
    
# importing nametuple() from collections module 
from collections import namedtuple
    
# Declaring namedtuple() 
Contributor = namedtuple('Contributor', ['topic', 'author', 'post']) 
    
# Adding values 
C = Contributor('Difference between DataClass vs NamedTuple vs Object in Python',
                'night_fury1',
                'Technical Content Writer Intern'
    
# Access using index 
print ("The Article Topic : ", end ="") 
print (C[0]) 
    
# Access using name  
print ("The Article Contributor Name : ", end ="") 
print (C.author) 
    
# Access using getattr() 
print ("The Article Contributor Post : ", end ="") 
print (getattr(C, 'post'))

chevron_right


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

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python script for demostraation of object
class Gfg:
  def __init__(self, topic, contributor):
    self.topic = topic
    self.contributor = contributor
  
  def myfunc(self):
    print("Article: ", self.topic)
    print("Contributor: ", self.contributor)
  
# objects creation    
g = Gfg("Difference between DataClass vs NamedTuple vs Object in Python"
        "nightfury1")
  
# function call
g.myfunc()

chevron_right


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

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.