-
Notifications
You must be signed in to change notification settings - Fork 22
[SIM119] Detect potential dataclasses #37
Copy link
Copy link
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Explanation
Dataclasses were introduced with PEP 557. Data Classes can be thought of as "mutable namedtuples with defaults".
Dataclasses should be used when the primary focus is to store data.
Dataclasses help, because they have a good __str__ and __eq__ implementation and you don't have to write __init__.
Example
# Bad
class Person:
def __init__(self, first_name, last_name, birthdate):
self.first_name = first_name
self.last_name = last_name
self.birthdate = birthdate
# Good
from dataclasses import dataclass
from datetime import date
@dataclass
class Person:
first_name: str
last_name: str
birthdate: dateAs an example why dataclasses are nice:
p11 = Person1("Bob", "Builder", date(2000, 1, 3))
p12 = Person1("Bob", "Builder", date(2000, 1, 3))
p21 = Person2("Bob", "Builder", date(2000, 1, 3))
p22 = Person2("Bob", "Builder", date(2000, 1, 3))
print(p11)
print(p11 == p12)
print("-" * 80)
print(p21)
print(p21 == p22)
gives:
<__main__.Person1 object at 0x7f3f8a32aac0>
False
--------------------------------------------------------------------------------
Person2(first_name='Bob', last_name='Builder', birthdate=datetime.date(2000, 1, 3))
True
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request