python mini-course university of oklahoma department of psychology lesson 26 classes and objects...
TRANSCRIPT
Python Mini-CourseUniversity of Oklahoma
Department of Psychology
Lesson 26Classes and Objects
6/16/09Python Mini-Course: Lesson 261
Lesson objectives
1. Write a class definition2. Instantiate objects3. Assign values to attributes4. Change attribute values5. Copy objects
6/16/09Python Mini-Course: Lesson 262
Class definition
Use the class keywordExample:class Point(object):
"""represents a point in 2-D space"""
print Point
6/16/09Python Mini-Course: Lesson 263
Instantiating an object
Call the class constructor by using the class name as if it were a function
Example:
p1 = Point()
print p1
6/16/09Python Mini-Course: Lesson 264
Assigning attribute values
Use the object name and the attribute name with dot notation
Example:p1.x = 3.0p1.y = 4.0print p1.x, p1.y
6/16/09Python Mini-Course: Lesson 265
Assigning attribute values
These are called instance attributesp2 = Point()p2.x, p2.y = 12.0, 13.0print p1.x, p1.yprint p2.x, p2.y
6/16/09Python Mini-Course: Lesson 266
Note on attributes
Python handles attributes somewhat differently from other OOP languagesAll attributes are "public"Attributes can be created on the fly
6/16/09Python Mini-Course: Lesson 267
Using attributes
Object attributes are just like any other variable
print '(%g, %g)' % (p1.x, p1.y)
from math import sqrtdistance = sqrt(p1.x**2 + p2.y**2)print distance
6/16/09Python Mini-Course: Lesson 268
Note:
Objects are data typesYou can pass objects to functions and return them from functions, just like any other data type
6/16/09Python Mini-Course: Lesson 269
Example:
def print_point(p): print '(%g, %g)' % (p.x, p.y)
print_point(p1)
NB: this example violates the principle of encapsulation
6/16/09Python Mini-Course: Lesson 2610
Encapsulation
Examplesrectangle1.pyrectangle2.pyrectangle3.py
6/16/09Python Mini-Course: Lesson 2611
Aliasing
Try this:box = Rectangle(10.0, 200.0)box1 = boxbox1.width = 100.0print box.width, box1.widthbox1 is box
6/16/09Python Mini-Course: Lesson 2612
Copying
Use the copy moduleimport copybox2 = copy.copy(box)box2.width = 50.0print box.width, box2.widthbox2 is box
6/16/09Python Mini-Course: Lesson 2613
Limitations of copying
box2.corner.x = 2.0print box.corner.xbox2.corner is box.corner
6/16/09Python Mini-Course: Lesson 2614