Unformatted text preview:

Unit 8 Classes and Objects Inheritance Special thanks to Roy McElmurry John Kurkowski Scott Shawcroft Ryan Tucker Paul Beck for their work Except where otherwise noted this work is licensed under http creativecommons org licenses by nc sa 3 0 OOP Defining a Class Python was built as a procedural language OOP exists and works fine but feels a bit more tacked on Java probably does classes better than Python gasp Declaring a class class name statements 2 Fields name value Example class Point x 0 y 0 point py 1 2 3 class Point x 0 y 0 main p1 Point p1 x 2 p1 y 5 can be declared directly inside class as shown here or in constructors more common Python does not really have encapsulation or private fields relies on caller to be nice and not mess with objects contents 3 Using a Class import class client programs must import the classes they use point main py 1 2 3 4 5 6 7 8 9 10 from Point import main p1 Point p1 x 7 p1 y 3 Python objects are dynamic can add fields any time p1 name Tyler Durden 4 Object Methods def name self parameter parameter statements self must be the first parameter to any object method represents the implicit parameter this in Java must access the object s fields through the self reference class Point def translate self dx dy self x dx self y dy 5 Implicit Parameter self Java this implicit public void translate int dx int dy x dx this x dx y dy this y dy Python self explicit def translate self dx dy self x dx self y dy Exercise Write distance set location and distance from origin methods 6 Exercise Answer point py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 from math import class Point x 0 y 0 def set location self x y self x x self y y def distance from origin self return sqrt self x self x self y self y def distance self other dx self x other x dy self y other y return sqrt dx dx dy dy 7 Calling Methods A client can call the methods of an object in two ways the value of self can be an implicit or explicit parameter 1 object method parameters or 2 Class method object parameters Example p Point 3 4 p translate 1 5 Point translate p 1 5 8 Constructors def init self parameter parameter statements a constructor is a special method with the name init Example class Point def init self x y self x x self y y How would we make it possible to construct a Point with no parameters to get 0 0 9 toString and str def str self return string equivalent to Java s toString converts object to a string invoked automatically when str or print is called Exercise Write a str method for Point objects that returns strings like 3 14 def str self return str self x str self y 10 Complete Point Class point py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 from math import class Point def init self x y self x x self y y def distance from origin self return sqrt self x self x self y self y def distance self other dx self x other x dy self y other y return sqrt dx dx dy dy def translate self dx dy self x dx self y dy def str self return str self x str self y 11 Operator Overloading operator overloading You can define functions so that Python s built in operators can be used with your class See also http docs python org ref customization html Operator Class Method neg self other pos self other mul self other truediv self other Unary Operators neg self Operator Class Method eq self other ne self other lt self other gt self other le self other ge self other pos self 12 Exercise Exercise Write a Fraction class to represent rational numbers like 1 2 and 3 8 Fractions should always be stored in reduced form for example store 4 12 as 1 3 and 6 9 as 2 3 Hint A GCD greatest common divisor function may help Define add and multiply methods that accept another Fraction as a parameter and modify the existing Fraction by adding multiplying it by that parameter Define and operators 13 Generating Exceptions raise ExceptionType message useful when the client uses your object improperly types ArithmeticError AssertionError IndexError NameError SyntaxError TypeError ValueError Example class BankAccount def deposit self amount if amount 0 raise ValueError negative amount 14 Inheritance class name superclass statements Example class Point3D Point z 0 Point3D extends Point Python also supports multiple inheritance class name superclass superclass statements if 1 superclass has the same field method conflicts are resolved in left to right order 15 Calling Superclass Methods methods class method object parameters constructors class init parameters class Point3D Point z 0 def init self x y z Point init self x y self z z def translate self dx dy dz Point translate self dx dy self z dz 16


View Full Document

UW CSE 142 - Python

Loading Unlocking...
Login

Join to view Python and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Python and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?