← Back to Python

All Topics

Advertisement

Learn/Python/Advanced Python

Named Tuples and Data Classes

Topic: Data Structures

Advertisement

Introduction

Compare and contrast namedtuples with data classes for different use cases.

NamedTuple vs DataClass

from collections import namedtuple
from dataclasses import dataclass

# Named tuple (immutable)
NTPoint = namedtuple('Point', ['x', 'y'])

# Data class (mutable by default)
@dataclass
class DCPoint:
    x: float
    y: float

When to Use Each

FeatureNamedTupleDataClass
MutabilityImmutableMutable/Immutable
MemorySmallerLarger
MethodsLimitedFull class
InheritanceLimitedFull support
Default valuesVia defaultsEasy

Data Class with Options

from dataclasses import dataclass, field

@dataclass(frozen=True)  # Immutable
class ImmutablePoint:
    x: float
    y: float

@dataclass(order=True)  # Comparable
class SortedPoint:
    x: float = field(compare=True)
    y: float = field(compare=False)

Practice Problems

  1. Migrate namedtuple to dataclass
  2. Use frozen dataclass for constants
  3. Compare memory usage of both
  4. Implement post_init validation
  5. Create recursive dataclass structure

Advertisement

Advertisement

Need More Practice?

Get personalized Python help from ChatWhole's AI-powered platform.

Get Expert Help →