Hacker News new | ask | show | jobs
by breatheoften 330 days ago
classes are a bad way to model data imo

I wish python had a clean way to define types without defining classes. Think a _good_ mechanism to define the shape of data contained within primitives/builtins containers without classes -- ala json/typescript (ideally extended with ndarray and a sane way to represent time)

Python classes wrapped around the actual "data" are sometimes necessary but generally always bad boilerplate in my experience.

3 comments

> I wish python had a clean way to define types without defining classes

dataclasses are pretty much that. They use the class mechanism but they're culturally accepted now as a clean way to build the equivalent of structs.

^ Agreed.

And e.g. you can add dataclasses-json for JSON serializability: https://pypi.org/project/dataclasses-json/

Yes, dataclasses are great. I often use them as a pretty clear and adopted way to handle serialization and deserialization, configs, etc.
> classes are a bad way to model data imo

Genuinely curious: why?

Not the one you’re replying to, but my take: The main problem with classes is that they conflate a lot of concepts that should be separate and you usually need only one or a few at once, but are 5orced into all of them. Namely:

• Product type

• Reference semantics

• Namespacing

• Pipeline-style call syntax

• Redefinition of infix operators

• Dynamic dispatch

• Subtyping

For example, you cannot have a product type with value semantics or a type that redefines infix operators but is not a product type.

pydantic?