In article <33f40372-13fb-4d52-921d-8ab00685c...@q30g2000prq.googlegroups.com>,
Sean DiZazzo  <half.ital...@gmail.com> wrote:
>
>Why is it that you can setattr() on an instance of a class that
>inherits from "object", but you can't on an instance of "object"
>itself?
>
>>>> o = object()
>>>> setattr(o, "x", 1000)
>Traceback (most recent call last):
>  File "<stdin>", line 1, in <module>
>AttributeError: 'object' object has no attribute 'x'
>
>>>> class Object(object):pass
>...
>>>> o = Object()
>>>> setattr(o, "x", 1000)
>>>> o.x
>1000
>
>I notice that the first example's instance doesn't have a __dict__.
>Is the second way the idiom?

>>> class C(object):
...     __slots__ = []
... 
>>> x = C()
>>> x.foo = 'bar'
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: 'C' object has no attribute 'foo'
-- 
Aahz (a...@pythoncraft.com)           <*>         http://www.pythoncraft.com/

"At Resolver we've found it useful to short-circuit any doubt and just
refer to comments in code as 'lies'. :-)"
--Michael Foord paraphrases Christian Muirhead on python-dev, 2009-3-22
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to