"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > Named Tuples in Python: what type are they?

Named Tuples in Python: what type are they?

Posted on 2025-03-24
Browse:202

Named Tuples in Python: what type are they?

Named tuples in Python are an extension of the built-in tuple data type, allowing you to give meaningful names to the elements of a tuple. In others words, named tuples are tuples with named attributes. Isn't that cool?

They are part of the collections module and provide a way to define simple, immutable classes in a simpler way.

Wait what, classes?
Yes, classes.

Named tuples are essentially immutable classes.

This is the magic that occurs: when you create a named tuple using namedtuple, the result is not an instance of the tuple itself, but rather a dynamically generated class that inherits from tuple. Again, cool!!

Let's see how this works.

from collections import namedtuple 

P = namedtuple("Point", "x y")

When you run P = namedtuple("Point", "x y"), you are creating a new class named Point (as specified in the first argument to namedtuple).

The namedtuple function uses type behind the scenes to dynamically create a new class named Point that inherits from tuple. This new class is stored in the variable P.

And as with classes, the type is type.

> type(P)
class 'type'
> class A:
    pass

> type(A)
class 'type'

And what type is the instance of a namedtuple?

from collections import namedtuple 

P = namedtuple("Point", "x y")
p = P(1,2)

> print(type(p)) 
class '__main__.Point'

p is an instance of type Point. But it's also a tuple:

> print(isinstance(p, tuple))
True

In summary:

  • P is a class generated dynamically by namedtuple.
  • Instances of P are objects of type Point that also subclass tuple.

And one last thing:

It's very common to name the namedtuple variable (what we called P) with the same name as the type name (what we called Point), the dynamically created class:

from collections import namedtuple 

Point = namedtuple("Point", "x y")

I used a different name to make clear the distinction between thw two.

Release Statement This article is reproduced at: https://dev.to/guzmanojero/named-tuples-in-python-what-type-are-they-128m?1 If there is any infringement, please contact [email protected] to delete it.
Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3