candide <candide@free.invalid> writes: > But beside this, how to recognise classes whose object doesn't have a > __dict__ attribute ?
str, list and others aren't classes, they are types. While all (new-style) classes are types, not all types are classes. It's instances of classes (types created by executing the "class" statement or its equivalent) that automatically get a __dict__, unless __slots__ was used at class definition time to suppress it. Built-in and extension types can choose whether to implement __dict__. (Mechanics of defining built-in and extension types are of course implementation-specific. CPython allows adding __dict__ to any extension type by setting the tp_dictoffset member of the type definition struct to the appropriate offset into the instance struct.) -- http://mail.python.org/mailman/listinfo/python-list