On Wed, 18 Sep 2013 20:38:10 -0400, Ned Batchelder wrote: > super() takes a class and an instance for a reason. If you could use > self.__class__ for the class, then it would only take the instance. > Super() needs to know the instance, but also needs to know the class > it's being called from.
You're correct, of course, but I would word the reason why slightly differently. super needs to know which instance it is being called from, but it also needs to know which class the method is defined in. Hence, given: class Spam(Food): def method(self): print("Spam spam spam!") super(Spam, self).method() class PickledSpam(Spam): pass obj = PickledSpam() obj.method() super is being called from a PickledSpam instance, self, but the call is defined in the Spam class. super needs to know about both of them. Of course, this hinges on how one defines "called from". I think it is helpful to understand methods as being called from the instance doing the calling rather than the class where they are defined. -- Steven -- https://mail.python.org/mailman/listinfo/python-list