[TOC]
根据类来创建对象被称为实例化,能让你使用类的实例.
创建和使用类
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is nov sitting.")
def roll_ove(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
1.方法init()
类中的函数称为方法;方法init()定义了包含三个形参:self,name,age.在这个方法中,形参self必不可少,还必须在其他形参前面.
为什么必须在方法定义中包含形参self呢?
因为Python调用这个init()方法来创建Dog实例时,将自动传入实参self.每个与类相关联的方法调用都自动传递实参self,他是一个指向实例本身的引用,让实例能够访问类中的属性和方法.
根据类创建实例
1.访问属性
要访问实例的属性,可以使用句点表示法.
2.调用方法
*类创建实例后,可以使用句点表示法来调用类中定义的任何方法
3.创建多个实例
使用类和实例
class Car();
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
def get_descriptive_name(self):
"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
my_new_car = Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())
继承
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法,
1.子类的方法init()
创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值.
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
long_name = str(self.year)+' '+self.make+' '+self.model
return long_name.title()
def read_odometer(self):
print("This car has "+str(self.odometer_reading)+" miles on it.")
def update_odometer(self,mileage):
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You cant't roll back an odometer!")
def increment_odometer(self,miles):
self.odometer_reading += miles
class ElectricCar(Car):#定义子类必须在括号内指定父类的名称
"""电动汽车的独特之处"""
def __init__(self,make,model,year):#接受创建Car实例所需的信息
"""初始化父类的属性"""
super().__init__(make,model,year)#调用父类__init__(),让子类实例包含父类的所有属性
my_tesla = ElectricCar('tesla','model s',2016)
print(my_tesla.get_descriptive_name())
2.给子类定义属性和方法
class Car():
--snip--
class ElectricCar(Car):
"""添加新属性"""
def __init__(self,make,model,year):
"""初始化父类的属性,再初始化电动汽车特有的属性"""
super().__init__(make,model,year)
self.battery_size = 70
def describe_battery(self):
"""打印一条描述电瓶容量的消息"""
print("This car has a "+str(self.battery_size)+"-kWh battery.")
my_tesla = ElectricCar('tesla','model s',2016)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
3.重写父类方法
重写父类的方法,可以在子类中定义一个需要重写的父类方法的名称方法.Python将不考虑这个父类方法,只关注子类定义的方法
导入类
1.导入单个类
创建一个只包含Car类的模块.
"""car.py.一个可用于表示汽车的类"""
class Car():
"""一次模拟汽车的简单尝试"""
def __init__(self,make,model,year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回整洁的描述性名称"""
long_name = str(self.year)+' '+self.make+' '+self.model
return long_name.title()
def read_odometer(self):
"""打印一条消息,指出汽车的里程"""
print("This car has "+str(self.odometer_reading)+"miles on it.")
def update_odometer(self,mileage):
"""
将里程表读数设置为指定的值
拒绝将里程表往回拨
"""
if mileage >= self.odometer_reading:
self.odometer_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self,miles):
"""将里程表读数增加指定的量"""
self.odometer_reading += miles
创建my_car.py并导入Car类并创建实例
from car import Car
my_new_car = Car('audi','a4',2016)
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading = 23
my_new_car.read_odometer()
导入整个模块
import car
导入模块中所有类from module_name import *
(不推荐)
模块导入模块