On 9/8/17 3:20 PM, Mike Miller wrote: > > On 2017-09-08 07:57, Eric V. Smith wrote: >> I've written a PEP for… > > Apologies for the following list dumb questions and bikesheds: > > > - 'Classes can be thought of as "mutable namedtuples with defaults".' > > - A C/C++ (struct)ure sounds like a simpler description that many more > would understand. Yes, other people have pointed out that this might not be the best "elevator pitch" example. I'm thinking about it. > - dataclass name: > > - class, redundant > - data, good but very common > - struct, used? > - Record? (best I could come up with) There was a bunch of discussions on this. We're delaying the name bikeshedding for later (and maybe never). > - Source needs blanks between functions, hard to read. It's supposed to be hard to read! You're just supposed to think "am I glad I don't have to read or write that". But I'll look at it. > - Are types required? Annotations are required, the typing module is not. > Maybe an example or two with Any? I'd rather leave it like it is: typing is referenced only once, for ClassVar. > - Intro discounts inheritance and metaclasses as "potentially interfering", > but unclear why that would be the case. > Inheritance is easy to override, metaclasses not sure? I don't really want to get in to the history of why people don't like inheritance, single and multi. Or how metaclass magic can make life difficult. I just want to point out that Data Classes don't interfere at all. > - Perhaps mention ORMs/metaclass approach, as prior art: > > https://docs.djangoproject.com/en/dev/topics/db/models/ > > - Perhaps mention Kivy Properties, as prior art: > > https://kivy.org/docs/api-kivy.properties.html Those are all good. Thanks. > - For mutable default values: > > @dataclass > class C: > x: list # = field(default_factory=list) > > Could it detect list as a mutable class "type" and set it as a factory > automatically? > > The PEP/bug #3 mentions using copy, but that's not exactly what I'm > asking > above. The problem is: how do you know what's a mutable type? There's no general way to know. The behavior in the PEP is just mean to stop the worst of it. I guess we could have an option that says: call the type to create a new, empty instance. @dataclass class C: x: list = field(default_type_is_factory=True) Thanks for the critical reading and your comments. I'm going to push a new version early next week, when I get back from traveling. Eric.
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