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?
In Python 3, classes extend object implicitly, whether you say so yourself or not.
See here.
Start here: http://www.python.org/doc/newstyle/
Also, read this: http://docs.python.org/release/2.5.2/ref/node33.html
It is one of several Python 2 interim solutions that will no longer be needed in version 3.
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, butset
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.