[Python-3000] PEP for Metaclasses in Python 3000 (original) (raw)
Talin talin at acm.org
Sat Mar 10 10:13:44 CET 2007
- Previous message: [Python-3000] PEP for Metaclasses in Python 3000
- Next message: [Python-3000] PEP for Metaclasses in Python 3000
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Josiah Carlson wrote:
Also, depending on the use, one may want to know the order in a 'move to end' fashion (if a is assigned to multiple times, it ends up in the ordering as if only the last assignment was done).
This is why I feel it is insufficient to keep just a record of what key names were inserted, it should be a record of both keys and values. So for example, if we have:
class A:
b = 1
b = 2
...the resulting list should be [(b, 1), (b, 2)]
This gives the metaclass a lot of flexibility for handling duplicates. Suppose, for example, a metaclass wants to handle duplicates by keeping only the last definition. This is easy to do:
newdict = {}
for key, value in orderlist:
newdict[ key ] = value # Overwrite any previous definition
What if you only want the first definition? Then check to see if the key is already in newdict and skip the assignment.
What if you want to flag duplicates as an error? Check to see if the key is already in newdict, and throw an exception if so.
You can even combine or concatenate the duplicates in some way if you keep enough information around to do so. It's up to the metaclass to decide.
-- Talin
- Previous message: [Python-3000] PEP for Metaclasses in Python 3000
- Next message: [Python-3000] PEP for Metaclasses in Python 3000
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]