On 12/01/13 08:09, Jan Riechers wrote:

So to rephrase what you and also other wrote:
By setting "oakTree = Tree()" I create a new "Tree()" class instance.
Now calls to "oakTree.grow()" access functions of the Tree class, by
traversing to it's "Superclass" Tree.

No, they traverse to its Tree class. Superclasses are only involved when you use inheritance. Consider:

class Tree:
   def __init__(self,height=0):
     self.height = height

   def getHeight(self):
      return self.height

def EverGreen(Tree):    # subclass of Tree
   def __init__(self, height=0, color='green'):
       Tree.__init__(self,height)
       self.color = color

   def getColor(self):
       return self.color


t = Tree()
print t.getHeight()     # calls Tree.getHeight

g = EverGreen()
print g.getHeight()    # calls Tree.getHeight by searching superclass
print g.getColor()     # calls EverGreen.getColor

So the superclass is only used in the case of g.getHeight()
Python looks for getHeight in the class of EverGreen and can't find it. So it looks in the superclass Tree to see if it can find getHeight there.

The "self" then, which also is used in the Superclass Function only
tells, work with the "own" (self) values of the class instance, instead
of the values of the class itself.

I guess that's right.

Maybe, I'm not sure what you mean. self is a reference to the instance invoking the method.

Actually Im puzzled with the difference between a classmethod and a
regular function definition inside a class object.

All methods are functions defined inside classes. "regular functions" are by definition NOT defined in a class. regular functions require no lookup mechanism and do not have a "magic" first parameter like self.

Does the classmethod just mean that I can use the class "math" and call
"math.random()" without creating an instance of math before using
"random()" ?

Maybe, if math were a class. But math is actually a module which is different to a class.

Okay, that makes sense - that class functions/methods (confusing with
that decorator to talk about)

The decorator is only used for classmethods not for instance methods.
Most of the time you don't need to use classmethods you only need instance methods.



--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to