[Python-3000] Metaclasses in Py3K
talin at acm.org
Sun Dec 17 00:41:14 CET 2006
Steven Bethard wrote:
>> The main issue for me is that I think that its important to distinguish
>> between get/set operations that are done at class definition time, and
>> get/set operations that are done later, after the class is created.
> Why? Can you explain your use case? Everything I'd care to do would
> treat later get/set operations on the class in the same way.
Imagine a metaclass that's being used to declare a C struct. When the
class is "finished", we examine the dictionary and compute the layout of
the struct and it's size in bytes, taking into account padding bytes and
alignment and such.
Once the struct has been computed, however, you can't go back and add
new fields, unless you want to add code that automatically re-compute
the layout of the C struct when this occurs. More likely, attributes
which were added to the class after class creation would be treated as
regular Python class variables.
Now, I'm not saying that this is the way a C struct class would have to
work. I'm trying to craft an example - the idea is that once the
'finishing' function has been called, there are certain kinds of class
member definitions that may no longer be available.
(Other than that - your general sketch of how metaclasses ought to work
makes a lot of sense to me.)
More information about the Python-3000