1 objects and classes classes – act as blueprints objects are instantiated from classes –...
Post on 19-Dec-2015
228 views
TRANSCRIPT
1
Objects and classes
• Classes– Act as blueprints
• Objects are instantiated from classes
– Encapsulate data: Attributes– Encapsulate function: Methods– Ideal for modeling real-world phenomena
2
Summary
– Class header• Keyword class begins definition, followed by name of class
and colon (:)
– Body of class• Indented block of code
– Optional documentation string• Describes the class• Appears immediately after class header
– Constructor method __init__• Executes each time an object is created• Initialize attributes of class• Returns None
– Object reference• All methods must at least specify this one parameter (self)• Represents object on which a method is called
17
Rational numbers in Python
• Strange rounding-off errors:
• Create class for representing rational numbers by storing numerator and denominator
>>> 2/3.00.6666666666666663>>> 2/6.00.3333333333333331>>> 5/6.00.8333333333333337
18
Rational numbersra
tiona
l.py
• Use float to make sure result of division will be a float, not
a rounded down integer
• Object reference self first argument in all methods
• self refers to the object on which the method is called
Initialization: Reduced form
19
Creating and using RationalNumber objects
>>> from rational import RationalNumber>>> a = RationalNumber(3, 4)>>> b = RationalNumber(3, 6)>>> a.getValue()0.75>>> b.getValue()0.5>>> b.getNumerator()1>>> b.getDenominator()2
No self argument in method calls!
Python puts object reference in place of self
.getDenominator( )bRationalNumber
20
Creating and using RationalNumber objects
>>> from rational import RationalNumber>>> a = RationalNumber(3, 4)>>> b = RationalNumber(3, 6)>>> a.getValue()0.75>>> b.getValue()0.5>>> b.getNumerator()1>>> b.getDenominator()2
class RationalNumber
a
numerator = 3
denominator = 4
numerator = 1
denominator = 2
b
21
Forgetting the self. prefix when referencing object attributes
Initializes only local variables which go out of scope when constructor terminates!
25bina
ry_t
ree.
py
Node class from course
notes
Use this class to represent the search tree nodes:
Each data attribute will be a RationalNumber
27sear
chtr
ee.p
y (p
art 2
)Adding a node to a binary search tree
Recursive function!
node
node
rational
28
Testing
%:~ python –i searchtree.pyNumerator: 2Denominator: 3Numerator: 3Denominator: 4Numerator: 7Denominator: 14Numerator:>>> root.getData().getvalue()0.666666666666663>>> root.getRight().getData().getvalue()0.75>>> root.getLeft().getData().getvalue()0.50
2/3
1/2 3/4
30sear
chtr
eete
st.p
y Searching for a node, demonstration
Search in big tree of random rational numbers
31
Numerator: 2Denominator? 3Closest match: 433/650Numerator: 4Denominator? 5Closest match: 43/54Numerator: 1Denominator? 2Closest match: 370/737Numerator: 4Denominator? 9Closest match: 391/878Numerator: 10Denominator? 1Closest match: 994/103Numerator: 5Denominator? 3Closest match: 521/313