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__ dict_proxy({ '__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 "<stdin>", line 1, in <module> TypeError: unorderable types: int() < str() ~Ethan~
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