diff -r cb14131583c6 -r 514098969b11 SEESenv/web/html/ch6oop.html --- a/SEESenv/web/html/ch6oop.html Thu Feb 25 00:04:27 2010 +0530 +++ b/SEESenv/web/html/ch6oop.html Thu Feb 25 00:45:20 2010 +0530 @@ -1,274 +1,81 @@ -
- -- - Table of Contents - -
-- In the previous sections we learnt about functions which provide certain level +
Table of Contents
+ +In the previous sections we learnt about functions which provide certain level of abstraction to our code by holding the code which performs one or more specific functionalities. We were able to use this function as many times as we wanted. In addition to functions, Python also higher level of abstractions -through - - - Classes - - - and - - - Objects - - - . - - - Objects - - - can be loosely defined as a +through Classes and Objects. Objects can be loosely defined as a collection of a set of data items and a set of methods. The data items can be any valid Python variable or any Python object. Functions enclosed within a class -are called as - - - methods - - - . If you are thinking if methods are functions why is there +are called as methods. If you are thinking if methods are functions why is there a distinction between the two? The answer to this will be given as we walk through -the concepts of - - - Classes - - - and - - - Objects - - - . - - - Classes - - - contain the definition for the - - - Objects - - - . - - - Objects - - - are instances of - - - Classes - - - . -
-- A class is defined using the keyword - - - class - - - followed by the class name, in -turn followed by a semicolon. The statements that a - - - Class - - - encloses are written -in a new block, i.e on the next indentation level: -
-- class Employee: +the concepts of Classes and Objects. Classes contain the definition for the +Objects. Objects are instances of Classes. ++A class is defined using the keyword class followed by the class name, in +turn followed by a semicolon. The statements that a Class encloses are written +in a new block, i.e on the next indentation level:
++class Employee: def setName(self, name): self.name = name def getName(self): - return self.name --- In the above example, we defined a class with the name Employee. We also defined + return self.name
In the above example, we defined a class with the name Employee. We also defined two methods, setName and getName for this class. It is important to note the differences between the normal Python functions and class methods defined above. Each method of the class must take the same instance of the class(object) from which it was called as the first argument. It is conventionally given the name, - - - self - - - . Note that - - - self - - - is only a convention. You can use any other name, but +self. Note that self is only a convention. You can use any other name, but the first argument to the method will always be the same object of the class from which the method was called. The data memebers that belong to the class are -called as - - - class attributes - - - . - - - Class attributes - - - are preceded by the object of -the class and a dot. In the above example, - - - name - - - is a class attribute since it -is preceded by the - - - self - - - object. - - - Class attributes - - - can be accessed from -anywhere within the class. -
-- We can create objects of a class outside the class definition by using the same +called as class attributes. Class attributes are preceded by the object of +the class and a dot. In the above example, name is a class attribute since it +is preceded by the self object. Class attributes can be accessed from +anywhere within the class.
+We can create objects of a class outside the class definition by using the same syntax we use to call a function with no parameters. We can assign this object -to a variable: -
-- emp = Employee() --
- In the above example, we create an object named - - - emp - - - of the class - - - Employee - - - . +to a variable:
++emp = Employee()+
In the above example, we create an object named emp of the class Employee. All the attributes and methods of the class can be accessed by the object of the -class using the standard notation - - - object.attribute - - - or - - - object.method() - - - . +class using the standard notation object.attribute or object.method(). Although the first parameter of a class method is the self object, it must not -be passed as an argument when calling the method. The - - - self - - - object is implicitly +be passed as an argument when calling the method. The self object is implicitly passed to the method by the Python interpreter. All other arguments passing rules like default arguments, keyword arguments, argument packing and unpacking follow -the same rules as those for ordinary Python functions: -
-- >>> emp.setName('John') +the same rules as those for ordinary Python functions: +++>>> emp.setName('John') >>> name = emp.getName() >>> print name John >>> print emp.name -John --- If we at all try to access a class attribute before assigning a value to it, i.e +John
If we at all try to access a class attribute before assigning a value to it, i.e before creating it, Python raises the same error as it would raise for the -accessing undefined variable: -
-- >>> emp = Employee() +accessing undefined variable: ++>>> emp = Employee() >>> emp.name Traceback (most recent call last): File "class.py", line 10, in <module> print e.name -AttributeError: Employee instance has no attribute 'name' --