150 likes | 173 Views
Learn how to define and use classes and objects in Python, including instantiating objects, assigning attribute values, and copying objects. This mini-course covers the basics of object-oriented programming in Python.
E N D
Lesson 26Classes and Objects Python Mini-Course University of Oklahoma Department of Psychology Python Mini-Course: Lesson 26
Lesson objectives • Write a class definition • Instantiate objects • Assign values to attributes • Change attribute values • Copy objects Python Mini-Course: Lesson 26
Class definition • Use the class keyword • Example: class Point(object): """ represents a point in 2-D space """ print Point Python Mini-Course: Lesson 26
Instantiating an object • Call the class constructor by using the class name as if it were a function • Example: p1 = Point() print p1 Python Mini-Course: Lesson 26
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 Python Mini-Course: Lesson 26
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 Python Mini-Course: Lesson 26
Note on attributes • Python handles attributes somewhat differently from other OOP languages • All attributes are "public" • Attributes can be created on the fly Python Mini-Course: Lesson 26
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 Python Mini-Course: Lesson 26
Note: • Objects are data types • You can pass objects to functions and return them from functions, just like any other data type Python Mini-Course: Lesson 26
Example: def print_point(p): print '(%g, %g)' % (p.x, p.y) print_point(p1) NB: this example violates the principle of encapsulation Python Mini-Course: Lesson 26
Encapsulation • Examples • rectangle1.py • rectangle2.py • rectangle3.py Python Mini-Course: Lesson 26
Aliasing Try this: box = Rectangle(10.0, 200.0) box1 = box box1.width = 100.0 print box.width, box1.width box1 is box Python Mini-Course: Lesson 26
Copying • Use the copy module import copy box2 = copy.copy(box) box2.width = 50.0 print box.width, box2.width box2 is box Python Mini-Course: Lesson 26
Limitations of copying box2.corner.x = 2.0 print box.corner.x box2.corner is box.corner Python Mini-Course: Lesson 26
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 Python Mini-Course: Lesson 26