Named Tuples and Data Classes

Advanced PythonData StructuresFree Lesson

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

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement