spir wrote:
On Thu, 04 Mar 2010 09:22:52 -0500
Dave Angel <da...@ieee.org> wrote:

Still, slots are important, because I suspect that's how built-ins are structured, to make the objects so small.

Sure, one cannot alter their structure. Not even of a direct instance of 
<object>:
o = object()
o.n=1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'n'

Now, some objects, probably most of the built-ins, are not extensible. You can't add new methods, or alter the behavior much.

This applies to any attr, not only methods, also plain "information":
s = "abc"
s.n=1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'n'


Other objects, such as instances of a class you write, are totally and very flexible.

conceptually this is equivalent to have no __slots__ slot. Or mayby they could 
be implemented using structs (which values would be pointers), instead of 
dicts. A struct is like a fixed record, as opposed to a dict. What do you 
think? On the implementation side, this would be much simpler, lighter, and 
more efficient.
Oh, this gives me an idea... (to implement so-called "value objects").

Denis
having not played much with slots, my model is quite weak there. But I figure the dictionary is in the implementation structure, along with a flag saying that it's readonly. Each item of such a dictionary would be an index into the fixed table in the object. Like a struct, as you say, except that in C, there's no need to know the names of the fields at run time.

DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to