Oops, I forgot the link. It should show up shortly at https://www.python.org/dev/peps/pep-0557/. Eric. On 9/8/17 7:57 AM, Eric V. Smith wrote: > I've written a PEP for what might be thought of as "mutable namedtuples > with defaults, but not inheriting tuple's behavior" (a mouthful, but it > sounded simpler when I first thought of it). It's heavily influenced by > the attrs project. It uses PEP 526 type annotations to define fields. > From the overview section: > > @dataclass > class InventoryItem: > name: str > unit_price: float > quantity_on_hand: int = 0 > > def total_cost(self) -> float: > return self.unit_price * self.quantity_on_hand > > Will automatically add these methods: > > def __init__(self, name: str, unit_price: float, quantity_on_hand: int > = 0) -> None: > self.name = name > self.unit_price = unit_price > self.quantity_on_hand = quantity_on_hand > def __repr__(self): > return > f'InventoryItem(name={self.name!r},unit_price={self.unit_price!r},quantity_on_hand={self.quantity_on_hand!r})' > > def __eq__(self, other): > if other.__class__ is self.__class__: > return (self.name, self.unit_price, self.quantity_on_hand) == > (other.name, other.unit_price, other.quantity_on_hand) > return NotImplemented > def __ne__(self, other): > if other.__class__ is self.__class__: > return (self.name, self.unit_price, self.quantity_on_hand) != > (other.name, other.unit_price, other.quantity_on_hand) > return NotImplemented > def __lt__(self, other): > if other.__class__ is self.__class__: > return (self.name, self.unit_price, self.quantity_on_hand) < > (other.name, other.unit_price, other.quantity_on_hand) > return NotImplemented > def __le__(self, other): > if other.__class__ is self.__class__: > return (self.name, self.unit_price, self.quantity_on_hand) <= > (other.name, other.unit_price, other.quantity_on_hand) > return NotImplemented > def __gt__(self, other): > if other.__class__ is self.__class__: > return (self.name, self.unit_price, self.quantity_on_hand) > > (other.name, other.unit_price, other.quantity_on_hand) > return NotImplemented > def __ge__(self, other): > if other.__class__ is self.__class__: > return (self.name, self.unit_price, self.quantity_on_hand) >= > (other.name, other.unit_price, other.quantity_on_hand) > return NotImplemented > > Data Classes saves you from writing and maintaining these functions. > > The PEP is largely complete, but could use some filling out in places. > Comments welcome! > > Eric. > > P.S. I wrote this PEP when I was in my happy place. >
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4