5 ms·
Prefer using named tuples over enums in Python.
by danthemanvsqz 6y ago
Prefer using named tuples over enums in Python.
- wk_end 6y agoNamed tuples and enums do entirely different things (loosely-speaking: the former are product types, the latter are sum types). You also probably want dataclasses [1] instead of named tuples. [1] https://docs.python.org/3/library/dataclasses.html https://docs.python.org/3/library/dataclasses.html
- zbentley 6y agoOr data bearing enums, which bring some of the best of all of those worlds, with (value declaration, not usage) exhaustiveness enforced at compile time: https://github.com/klaviyo/matrix_enum https://github.com/klaviyo/matrix_enum My colleague and I started making use of that pattern last year (before open sourcing the package) and found it very useful.
- danthemanvsqz 6y agoThey do different things but in the wild are used in the same way. Data classes are not immutable so it would not be ideal for what I used named tuples for.
- wk_end 6y agoData classes can be made immutable using ‘frozen=True’. It sucks that it’s not default though. Can you give an example of how you use enums and named tuples in the same way? That just doesn’t seem to make a lot of sense to me, but maybe I’m missing something.