Problem of Readability of Python

Chris Mellon arkanes at gmail.com
Wed Oct 17 15:11:01 EDT 2007


On 10/17/07, kiilerix at gmail.com <kiilerix at gmail.com> wrote:
> On Oct 7, 10:24 pm, al... at mac.com (Alex Martelli) wrote:
> > $ python -mtimeit -s'class A(object):pass' -s'a=A()' 'a.zop=23'
>
> When I know that all instances of classes inheriting from object have
> a namespace, then I would expect either that all objects have a
> namespace or that it was inherited from object. I would expect
> instantiating object to be the simplest and best way to get a
> namespace.
>
> But ...
>
> >>> o = object()
> >>> o.foo = 7
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> AttributeError: 'object' object has no attribute 'foo'
> >>> o.__slot__
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> AttributeError: 'object' object has no attribute '__slot__'
> >>> class O(object): pass
> >>> o = O()
> >>> o.foo = 7
>
> That object is kind of "pure virtual" seems to me to be a confusing
> special case without any advantages.
>
> Why can't object be instantiated directly? Is that explained and
> documented anywhere?
>

What makes you think it can't be instantiated directly? You just did
it. It's not, however, suitable for use as an arbitrary thing to stick
attributes on.

Which is a little sad, but a necessary requirement for things like
int() and str() to be small and fast.



More information about the Python-list mailing list