Class 类
类 class
创建实例
使用类和实例
继承
导入类
python标准库
9.1.1 创建和实用类
class Dog ( object ) :
def __init__ ( self, name, age) :
self. name = name
self. age = age
def sit ( self) :
print ( self. name. title( ) + ' is sitting' )
def roll_over ( self) :
print ( self. name. title( ) + ' is rolled over' )
my_dog = Dog( 'peter' , 8 )
my_dog. name
my_dog. age
my_dog. sit( )
my_dog. roll_over( )
9.1.2 餐馆类
class Restaurant ( ) :
def __init__ ( self, restautemt_name, cuisine_type) :
self. restaurent_name = restautemt_name
self. cuisine_type = cuisine_type
def describe_restaurent ( self) :
print ( "餐馆的名字是" + self. restaurent_name)
print ( "厨房类型是" + self. cuisine_type)
def open_restaurent ( self) :
print ( self. restaurent_name+ "餐馆正在营业!" )
my_restaurent = Restaurant( '海底啦' , '火锅' )
my_restaurent. describe_restaurent( )
my_restaurent. open_restaurent( )
9.1.3 用户类
class User ( ) :
def __init__ ( self, first_name, last_name, age, address, height, weight) :
self. first_name = first_name
self. last_name = last_name
self. age = age
self. address = address
self. height = height
self. weight = weight
def describe_user ( self) :
print ( ( self. first_name+ self. last_name) . title( ) + '的年龄是' + str ( self. age) + "," +
self. address+ "人,身高" + str ( self. height) + '厘米,体重' + str ( self. weight) + '千克。' )
def great_user ( self) :
print ( 'hello!' + ( self. first_name+ self. last_name) . title( ) )
me = User( 'li' , 'binglin' , 22 , '四川' , 187 , 74 )
me. describe_user( )
9.2.1 Car类
class Car ( ) :
def __init__ ( self, make, model, year) :
self. make = make
self. model = model
self. year = year
self. odometer = 0
def display_info ( self) :
print ( self. make)
print ( self. model)
print ( self. year)
def update_odometer ( self, new_value) :
if new_value > self. odometer:
self. odometer = new_value
def add_odometer ( self, add_value) :
if add_value > 0 :
self. odometer += add_value
def read_odometer ( self) :
print ( '这辆车已经跑了' + str ( self. odometer) + "公里了" )
car1 = Car( 'auto' , 'a4' , 2006 )
car1. read_odometer( )
car1. odometer = 1000
car1. read_odometer( )
car1. update_odometer( 2000 )
car1. read_odometer( )
car1. add_odometer( 100 )
car1. read_odometer( )
9.2.2 尝试登录次数
class User ( ) :
def __init__ ( self, login_attempts) :
self. login_attempts = login_attempts
def increment_login_attempts ( self) :
self. login_attempts += 1
def reset_login_attempts ( self) :
self. login_attempts = 0
user = User( 100 )
user. increment_login_attempts( )
user. increment_login_attempts( )
user. increment_login_attempts( )
user. increment_login_attempts( )
user. increment_login_attempts( )
user. login_attempts
user. reset_login_attempts( )
user. login_attempts
9.3.1 继承 重写父类方法
class ElectricCar ( Car) :
def __init__ ( self, make, model, year) :
super ( ) . __init__( make, model, year)
self. battery_size = 100
def update_battery_size ( self, new_size) :
self. battery_size = new_size
def display_battery_size ( self) :
print ( self. battery_size)
def display_info ( self) :
print ( '父类方法已修改' )
my_ecar = ElectricCar( 'tesla' , 'model y' , 1999 )
my_ecar. read_odometer( )
my_ecar. display_battery_size( )
my_ecar. update_battery_size( 200 )
my_ecar. display_battery_size( )
my_ecar. display_info( )
9.3.2 将实例用作属性
class Address ( ) :
def __init__ ( self, address = '四川' ) :
self. address = address
def update_address ( self, new_address) :
self. address = new_address
def display_address ( self) :
print ( self. address)
class PhoneNumber ( ) :
def __init__ ( self, number) :
self. number = number
def update_number ( self, new_number) :
self. number = new_number
def display_phone_number ( self) :
print ( self. number)
class People ( ) :
def __init__ ( self, first_name, last_name) :
self. first_name = first_name
self. last_name = last_name
def display_full_name ( self) :
print ( ( self. first_name+ self. last_name) . title( ) )
class China ( People) :
def __init__ ( self, first_name, last_name) :
super ( ) . __init__( first_name, last_name)
self. phone_number = PhoneNumber( '123456789789' )
self. address = Address( )
me = China( 'li' , 'binglin' )
me. address. display_address( )
me. display_full_name( )
me. phone_number. display_phone_number( )
me. address. update_address( '江苏' )
me. phone_number. update_number( '9875328787' )
me. address. display_address( )
me. phone_number. display_phone_number( )
9.3.3 冰淇淋小店,继承自餐馆类,添加属性,创建实例
class IceCream ( Restaurant) :
def __init__ ( self, restautemt_name, cuisine_type) :
super ( ) . __init__( restautemt_name, cuisine_type)
self. flavors = [ 'milk' , 'cheese' , 'mango' , 'banana' ]
def display_icecream_taste ( self) :
for taste in self. flavors:
print ( taste+ "味冰淇淋!" )
my_iceCream = IceCream( '哈根达斯' , '冰淇淋' )
my_iceCream. display_icecream_taste( )
9.3.4 Admin类
class Admin ( User) :
def __init__ ( self, first_name, last_name, age, address, height, weight) :
super ( ) . __init__( first_name, last_name, age, address, height, weight)
self. privileges = [ 'can add post' , 'can delete post' , 'can ban user' ]
def show_privileges ( self) :
for priv in self. privileges:
print ( priv)
Admin_ = Admin( 'li' , 'binglin' , 22 , 'sichuan' , 178 , 74 )
Admin_. show_privileges( )
9.4.1 使用OrderedDict类
from collections import OrderedDict
words = OrderedDict( )
words[ '放弃' ] = 'abandon'
words[ '能力' ] = 'ability'
words[ '苹果' ] = 'apple'
for key, value in words. items( ) :
print ( key+ ":" + value)
```
```python
from random import randint
class Die ( object ) :
def __init__ ( self, sides= 6 ) :
self. sides = sides
def roll_die ( self) :
print ( randint( 1 , self. sides) )
my_die = Die( )
for i in range ( 10 ) :
my_die. roll_die( )