So I'm just learning python (I know plenty of other languages) and I'm confused about something. I think this is due to lack of documentation (at least that I could find). On a few websites, I've read that you should derive your classes from object
:
class Base(object): pass
But I don't see what that does or why or when you should do it. Is there official documentation on this that I've missed? Is this a 3.x feature?
Each class in Python, by default, inherits from the object base class.
Inheritance allows us to define a class that inherits all the methods and properties from another class. Parent class is the class being inherited from, also called base class. Child class is the class that inherits from another class, also called derived class.
Classes that inherit from another are called derived classes, subclasses, or subtypes. Classes from which other classes are derived are called base classes or super classes. A derived class is said to derive, inherit, or extend a base class.
Mostly it isn't going to matter whether or not you inherit from object, but if you don't there are bugs waiting to catch you out when you've forgotten that you decided not to bother.
Some subtle things just won't work properly if you don't ultimately inherit from object:
get
works alright, but set
does weird things.Some people are fine with continuing to use classic classes except when they need the new behaviour, others say to always use new style classes to avoid later shooting yourself in the foot. If you're working on a single person project do whatever is good for you; if its a shared project be consistent with the other developers.
In Python 3, classes extend object implicitly, whether you say so yourself or not.
See here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With