On Oct 16, 2019, at 13:48, Steven D'Aprano <st...@pearwood.info> wrote: > > I don't think that "structural" is the word you are looking for. Lists > and tuples and sets are all structural. That's why they're called "data > structures".
I think what he’s looking for is the adjective that goes with the quasi-word “struct” as used in C, and in Python’s ctypes and C API. The type name “Struct” isn’t bad here, but the adjective “structural” has to many other connotations. Maybe borrowing a word from a different language—record or datatype or something—would avoid that problem? But I think the big problem here is the one you identified. We can make a list of things that are “like C structs” (which should probably include structseq builtin/extension types, ctypes.Struct, third-party stuff like attrs and maybe numpy structured dtypes, in addition to namedtuple and dataclass). Maybe we could even come up with a way to either programmatically detect them or get them all registered. But what would you do with it? It might be useful for reflection if there were a way to enumerate all of the “struct fields” that worked for all “struct types”, but there isn’t. Also, while all of these things _allow_ you to define a plain-old-data struct, none of them _require_ it. You can have a dataclass, namedtuple subclass, structseq, ctypes.Struct, etc. that has all kinds of fancy behavior, including not just methods, but @property and weird __new__ overloads and even custom __getattribute__. And of course you can just as easily define a regular old class and then use it as a plain-old-data struct. So, would this even be useful as a hint, much less a guarantee, of anything? _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/SCOXP4BYJ4HO4I74E7WPMRCJ5TLDUD4B/ Code of Conduct: http://python.org/psf/codeofconduct/