Dataclass in Python
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.namePython : with @dataclass
from dataclasses import dataclass
@dataclass
class User:
id: int
name: strThe 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.