Lesson 26 Classes and Objects Python Mini-Course University of Oklahoma Department of Psychology Python Mini-Course: Lesson 26 6/16/09
Download ReportTranscript Lesson 26 Classes and Objects Python Mini-Course University of Oklahoma Department of Psychology Python Mini-Course: Lesson 26 6/16/09
Lesson 26 Classes and Objects Python Mini-Course University of Oklahoma Department of Psychology 1 Python Mini-Course: Lesson 26 6/16/09
Lesson objectives
1.
2.
3.
4.
5.
Write a class definition Instantiate objects Assign values to attributes Change attribute values Copy objects 2 Python Mini-Course: Lesson 26 6/16/09
Class definition
Use the class keyword Example: class Point(object): """ represents a point in 2-D space """ print Point 3 Python Mini-Course: Lesson 26 6/16/09
Instantiating an object
Call the class constructor by using the class name as if it were a function Example: p1 = Point() print p1 4 Python Mini-Course: Lesson 26 6/16/09
Assigning attribute values
Use the object name and the attribute name with dot notation Example: p1.x = 3.0
p1.y = 4.0
print p1.x, p1.y
5 Python Mini-Course: Lesson 26 6/16/09
Assigning attribute values
These are called instance
attributes
p2 = Point() p2.x, p2.y = 12.0, 13.0
print p1.x, p1.y
print p2.x, p2.y
6 Python Mini-Course: Lesson 26 6/16/09
Note on attributes
Python handles attributes somewhat differently from other OOP languages All attributes are "public" Attributes can be created on the fly 7 Python Mini-Course: Lesson 26 6/16/09
Using attributes
Object attributes are just like any other variable print '(%g, %g)' % (p1.x, p1.y) from math import sqrt distance = sqrt(p1.x**2 + p2.y**2) print distance 8 Python Mini-Course: Lesson 26 6/16/09
Note:
Objects are data types You can pass objects to functions and return them from functions, just like any other data type 9 Python Mini-Course: Lesson 26 6/16/09
Example:
def print_point(p): print '(%g, %g)' % (p.x, p.y) print_point(p1) NB: this example violates the principle of encapsulation 10 Python Mini-Course: Lesson 26 6/16/09
Encapsulation
Examples rectangle1.py
rectangle2.py
rectangle3.py
11 Python Mini-Course: Lesson 26 6/16/09
Aliasing
Try this: box = Rectangle(10.0, 200.0) box1 = box box1.width = 100.0
print box.width, box1.width
box1 is box 12 Python Mini-Course: Lesson 26 6/16/09
Copying
Use the copy module import copy box2 = copy.copy(box) box2.width = 50.0
print box.width, box2.width
box2 is box 13 Python Mini-Course: Lesson 26 6/16/09
Limitations of copying
box2.corner.x = 2.0
print box.corner.x
box2.corner is box.corner
14 Python Mini-Course: Lesson 26 6/16/09
Deep copying
Use the copy module box3 = copy.deepcopy(box) box3.corner.x = 1.0
print box.corner.x, box3.corner.x
box3.corner is box.corner
15 Python Mini-Course: Lesson 26 6/16/09