If I define a class in Python such as:
class AClass:
__slots__ = ['a', 'b', 'c']
Which class does it inherit from? It doesn't seem to inherit from object
.
If I define a class in Python such as:
class AClass:
__slots__ = ['a', 'b', 'c']
Which class does it inherit from? It doesn't seem to inherit from object
.
If you define a class and don't declare any specific parent, the class becomes a "classic class", which behaves a bit differently than "new-style classes" inherited from object. See here for more details: http://docs.python.org/release/2.5.2/ref/node33.html
Classic classes don't have a common root, so essentially, your AClass doesn't inherit from any class.
Note that this is specific to Python versions before 3.0. In Python 3, all classes are new-style classes and inherit implicitly from object, if no other parent is declared.
Try the following code snippet in Python 2.7 and Python 3.1
In Python 2.7, you will get:
And Python 3.1 you will get.
And that explains it all. It is old style class in Python 2, unless you subclass it from
object
. Only in Python3, it will be treated like a new style class by default.Let's try it out.
Read an introduction to the new style classes in the links given in other answers.
In Python 2.x or older, your example
AClass
is an "old-style" class.A "new-style" class has a defined inheritance and must inherit from object or some other class.
What is the difference between old style and new style classes in Python?
EDIT: Wow, I didn't think it was possible to use the old-style syntax in Python 3.x. But I just tried it and that syntax still works. But you get a new-style class.