Lesson 26 Classes and Objects Python Mini-Course University of Oklahoma Department of Psychology Python Mini-Course: Lesson 26 6/16/09

Download Report

Transcript 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