Dataclass in Python

By Pradyumna Chippigiri

February 1st, 2026


Dataclasses is a way by which we can automatically generate common methods like constructor, repr, and equality methods for a class., we can just use it as a decorator to the class. (@dataclass decorator).

Python : without @dataclass

class User:
    def __init__(self, id: int, name: str):
        self.id = id
        self.name = name
 
    def __repr__(self):
        return f"User(id={self.id!r}, name={self.name!r})"
 
    def __eq__(self, other):
        return isinstance(other, User) and self.id == other.id and self.name == other.name

Python : with @dataclass

from dataclasses import dataclass
 
@dataclass
class User:
    id: int
    name: str

The decorator is auto-generating __init__, __repr__, and __eq__ for you.

Just similar to the records in Java..

Java : without record

import java.util.Objects;
 
public final class User {
  private final int id;
  private final String name;
 
  public User(int id, String name) {
    this.id = id;
    this.name = name;
  }
 
  public int getId() { return id; }
  public String getName() { return name; }
 
  @Override public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof User u)) return false;
    return id == u.id && Objects.equals(name, u.name);
  }
 
  @Override public int hashCode() {
    return Objects.hash(id, name);
  }
 
  @Override public String toString() {
    return "User{id=" + id + ", name='" + name + "'}";
  }
}

Java : with record (Java 16+)

public record User(int id, String name) {}

Records auto-generate constructor, accessors, equals/hashCode, and toString , exactly same as @dataclass.