本文内容参考Eric Metthes编写的《python编程——从入门到实践》
前情提要:
本文内容是书中的代码,具体解释可以参考那本书第九章,编者只是将代码总结起来供以后复习使用,也欢迎小伙伴们学习完书的第九章再来看看代码,作为复习使用~
面向对象编程
- 类的基本结构
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())
- 继承
class Car():
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_describe_name(self):
long_name = str(self.year)+' '+self.make+' '+self.model
return long_name
def read_odometer(self):
print('This car has '+ str(self.odometer_reading)+" miles on it.")
def updat_odometer(self,mileage):
if mileage >= self.odometer_reading:
self.odometer_reading += mileage
else:
print("You can't roll back an odometer!")
def increase_odometer(self,miles):
self.odometer_reading += miles
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year) #super()是一个特殊函数,可实现父类与子类的连接
my_tesla = ElectricCar('tesla','model s',2016)
print(my_tesla.get_describe_name())
my_tesla.updat_odometer(1600)
my_tesla.increase_odometer(20)
print(my_tesla.read_odometer())
- 给子类定义属性与方法
class Car():
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_describe_name(self):
long_name = str(self.year)+' '+self.make+' '+self.model
return long_name
def read_odometer(self):
print('This car has '+ str(self.odometer_reading)+" miles on it.")
def updat_odometer(self,mileage):
if mileage >= self.odometer_reading:
self.odometer_reading += mileage
else:
print("You can't roll back an odometer!")
def increase_odometer(self,miles):
self.odometer_reading += miles
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init__(make,model,year) #super()是一个特殊函数,可实现父类与子类的连接
self.battery_size = 70
def describe(self):
print("This car has a "+ str(self.battery_size)+'-kWh battery.')
my_tesla = ElectricCar('tesla','model s',2016)
print(my_tesla.get_describe_name())
my_tesla.describe()
- 将实例用作属性
class Car():
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
def get_describe_name(self):
long_name = str(self.year)+' '+self.make+' '+self.model
return long_name
def read_odometer(self):
print('This car has '+ str(self.odometer_reading)+" miles on it.")
def updat_odometer(self,mileage):
if mileage >= self.odometer_reading:
self.odometer_reading += mileage
else:
print("You can't roll back an odometer!")
def increase_odometer(self,miles):
self.odometer_reading += miles
class Battery():
def __init__(self,battery_size = 70):
"""初始化电瓶的属性"""
self.battery_size = battery_size
def describe_bettery(self):
print("This car has a "+str(self.battery_size)+"-kWh battery.")
class ElectricCar(Car):
def __init__(self,make,model,year): #初始化父类属性
super().__init__(make,model,year) #super()是一个特殊函数,可实现父类与子类的连接
self.battery = Battery() #属性
my_tesla = ElectricCar('tesla','model s',2016)
print(my_tesla.get_describe_name())
my_tesla.battery.describe_bettery()