[Python-Dev] Non-string keys in type dict (original) (raw)
Guido van Rossum guido at python.org
Thu Mar 8 18:06:41 CET 2012
- Previous message: [Python-Dev] Non-string keys in type dict
- Next message: [Python-Dev] Non-string keys in type dict
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, Mar 8, 2012 at 8:22 AM, Ethan Furman <ethan at stoneleaf.us> wrote:
Guido van Rossum wrote:
On Wed, Mar 7, 2012 at 11:43 PM, Ethan Furman wrote:
Are you able to modify classes after class creation in Python 3? Without using a metaclass? Yes, by assignment to attributes. The dict is a read-only proxy, but attribute assignment is allowed. (This is because the "new" type system introduced in Python 2.2 needs to track changes to the dict; it does this by tracking setattr/delattr calls, because dict doesn't have a way to trigger a hook on changes.) Poorly phrased question -- I meant is it possible to add non-string-name attributes to classes after class creation. During class creation we can do this: --> class Test: ... ns = vars() ... ns[42] = 'green eggs' ... del ns ... --> Test <class '_main_.Test'> --> Test.dict dictproxy({ 'module': 'main', 42: 'green eggs', 'doc': None, 'dict': <attribute '_dict_' of 'Test' objects>, 'weakref': <attribute '_weakref_' of 'Test' objects>, 'locals': { 42: 'green eggs', 'module': 'main', 'locals': {...}} }) --> Test.dict[42] 'green eggs' A little more experimentation shows that not all is well, however: --> dir(Test) Traceback (most recent call last): File "", line 1, in TypeError: unorderable types: int() < str()
So what conclusion do you draw?
-- --Guido van Rossum (python.org/~guido)
- Previous message: [Python-Dev] Non-string keys in type dict
- Next message: [Python-Dev] Non-string keys in type dict
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]