Christian Tismer <tismer@tismer.com> writes:
classmethod works for every kind of class, may it be a newstyle class, triggered by - deriving from object - using __slots__ - deriving from a builtin type or a descendant - did I forget something? or a "classic" class, it always works. For reference, see http://www.python.org/2.2/descrintro.html [...] No, sorry. object is just a special case for deriving a new-style class, see above. They can also be created by deriving from builtin types, or by using __slots__.
That's incorrect, IIUC. __slots__ only has a special meaning for *new stype classes* only, it doesn't trigger anything in classes classes. New style classes always have object as *one* of it's base classes, and most builtin types are new style classes also.
Furthermore, I'm going to propose an extension to the new class system (at least for the MiniPy prototype) that goes a bit further: - __slots__ should get the ability to denote the type of a slot to be generated, especially ctypes types
I'm not really understanding what you're proposing here. You could look at ctypes as implementing 'typed slots' with C-compatible layout. class A(object): __slots__ ["x", "y", "z"] class B(ctypes.Structure): _fields_ = [("x", "c"), ("y", "i"), ("z", "q")] __slots__ = [] Instances of both A and B can only have 'x', 'y', and 'z' instance variables (or should I say slots), both don't have a __dict__.
- it should be possible to derive a class from nothing, not even from object or classic, but I'd like to describe a plain C structure by classes.
This is maybe also something that ctypes already does. The B *class* above knows all about this C structure struct B { char x; int y; long long z; };
ctypes.sizeof(B) 16
The latter will allow to define the object class and all builtin types with the same machinery.
Thomas