Python Training Course VI
Objects and Classes
What Are Objects?
Define a Class with class
Inheritance
Method
Properties
Name Mangling for Privacy
Duck Typing (polymorphism)
Special Methods
Composition
2
What Are Objects?
Everything in Python, from numbers to modules, is an object.
An object contains both data (variables, called attributes) and code
(functions, called methods).
For example, the integer object with the value 7 is an object that facilitates
methods such as addition and multiplication. 8 is a different object. This
means there’s an Integer class in Python, to which both 7 and 8 belong.
The strings 'cat’ and 'duck' are also objects in Python, and have string
methods that you’ve seen, such as capitalize() and replace() .
When you create new objects no one has ever created before, you must
create a class that indicates what they contain.
Think of objects as nouns and their methods as verbs. An object
represents an individual thing, and its methods define how it interacts with
other things.
3
Define a Class with class
__init__() 是特殊的 method 名稱,作為定義 class 初
始之用
self argument 表示指到自己本身
__init__() 的第一個參數必須是 self
雖然 self 在 Python 中並非保留字 , 但就是這樣
用
• Looks up the definition of the Person class
• Creates a new object in memory
• Calls the object’s __init__ method, passing this
newly-created object as self and the other
Inside the Person class definition, you access the
argument ( 'Elmer Fudd' ) as name
• Stores the value of name in the object name attribute as self.name . When you create an
• Returns the new object actual object such as hunter , you refer to it as
• Attaches the name hunter to the object hunter.name .
4
Inheritance( 多數翻譯成”繼承” )
Car class is a parent, superclass, or base class which
has an exclaim() method.
inheritance: creating a new class from an existing class
but with some additions or changes. It’s an excellent
way to reuse code. When you use inheritance, the new
class can automatically use all the code from the old
class but without copying any of it.
Yugo class inherited from Car class is a child, subclass,
or derived class. Without doing anything special, Yugo
inherited the exclaim() method from Car.
5
Override a Method
overrode the exclaim() method. We can override any
methods, including __init__().
6
Override __init__() method
7
Add a method
Add a need_a_push() method.
8
Get Help from Your Parent with super
The super() gets the definition of the parent class,
person .
The __init__() method calls the person.__init__() method.
It would have defeated our use of inheritance.
If the definition of Person changes in the future, using
super() will ensure that the attributes and methods that
EmailPerson inherits from Person will reflect the change.
9
Get and Set Attribute Values with Properties
Some object-oriented languages support private
object attributes that can’t be accessed directly
from the outside; programmers often need to
write getter and setter methods to read and write
the values of such private attributes.
Pythonic—use properties.
The first argument to
property() is the getter
method, and the second is
the setter. Now, when you
refer to the name of any
Duck object, it actually calls
the get_name() method to
return it.
When you assign a value to
the name attribute, the
set_name() method will be
called. 10
Define properties with decorators
If you don’t specify a setter
property for an attribute, you
can’t set it from the outside.
11
Name Mangling for Privacy
Python has a naming convention
for attributes that should notbe
visible outside of their class
definition: begin by using with
two underscores ( __ ).
you can’t access the __name attribute
12
Method Types Some data (attributes) and functions
(methods) are part of the class itself,
and some are part of the objects
that are created from that class.
When you see an initial self argument
in methods within a class definition,
it’s an instance method.
In contrast, a class method affects the
class as a whole. Any change you
make to the class affects all of its
objects.
with no initial self or class parameter
13
Polymorphism Python has a loose implementation of
polymorphism; this means that it
applies the same operation to different
objects, regardless of their class.
Three different versions of the says() method
provide different behavior for the three
classes. This is traditional polymorphism in
object-oriented languages.
14
Duck Typing
Python goes a little further and lets you run the
who() and says() methods of any objects that
have them.
This behavior is sometimes called duck
typing, after the old saying: If it walks like a
duck and quacks like a duck, it’s a duck.
15
Special Methods
16
Special Methods Tables
17