Python 3.1, object, and setattr()

Steve Holden steve at holdenweb.com
Thu Apr 1 16:25:08 CEST 2010


Ethan Furman wrote:
> Greetings!
> 
> Perhaps I woke up too early this morning, but this behaviour has me
> baffled:
> 
> Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit
> (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> 
> --> test = object()
> 
> --> setattr(test, 'example', 123)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> AttributeError: 'object' object has no attribute 'example'
> 
> Shouldn't setattr() be creating the 'example' attribute?  Any tips
> greatly appreciated!
> 
By the way, the "solution" is to create a subclass of object (which in
Python 3 simply requires you to declare a class! In Python 2 you'd have
to explicitly subclass object, or (equivalently) set your class's
metaclass to type with

    __metaclass__ = type


regards
 Steve
-- 
Steve Holden           +1 571 484 6266   +1 800 494 3119
See PyCon Talks from Atlanta 2010  http://pycon.blip.tv/
Holden Web LLC                 http://www.holdenweb.com/
UPCOMING EVENTS:        http://holdenweb.eventbrite.com/




More information about the Python-list mailing list