5 Cool New Features in Python 3.7
By Idego Group

Python 3.7 arrived on June 27, 2018, introducing several compelling enhancements alongside significant performance upgrades. The release included a breakpoint() function, reserved keywords for async/await, module-level __getattr__ and __dir__ methods, nanosecond-resolution timing capabilities, deferred type hint evaluation, context variables, and data classes.
Data classes represent the most significant advancement in this version. They enable developers to create more structured and readable code by reducing boilerplate requirements. Through the @dataclass decorator from the new dataclasses module, programmers can automatically generate __init__ and __repr__ methods with minimal code.
Beyond basic usage, data classes support ordering capabilities. The @dataclass(order=True) parameter enables comparison operations and sorting. The field() function allows customization of individual attributes, such as excluding certain fields from ordering logic.
The decorator accepts multiple parameters controlling generated methods: init, repr, eq, order, unsafe_hash, and frozen. These parameters grant fine-grained control over which special methods get automatically created.
Data classes support inheritance with preserved field ordering from parent classes, maintaining logical attribute sequences across class hierarchies.
The asdict() function from dataclasses provides straightforward dictionary conversion, simplifying JSON serialization for API communication without requiring extensive custom code.
Data classes facilitate cleaner separation between data models and business logic. Developers can identify data objects within existing codebases and refactor them using decorators to reduce lines while improving clarity and maintainability.