第八章 类
8.1 创建和使用类
class Dog():
def __init__(self, name, age):
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令石蹲下"""
print(self.name + "is now sitting!")
def roll(self):
"""模拟小狗打滚"""
print(self.name + "rolled over!")
dog = Dog('mango', 4)
dog.sit()
dog.roll()
8.2 修改属性的值
可以有三种方式修改属性的值:直接通过实例修改;通过设置方法进行修改;通过方法进行递增。
- 通过设置方法修改属性:
class Car():
"""打印汽车的类型"""
def __init__(self, make, year, model):
"""初始化"""
self.make = make
self.year = year
self.model = model
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回汽车的完整信息"""
full_name = str(self.year) + " " + self.make + " " + self.model
return full_name
def read_odometer(self):
print("这辆车已经跑了" + str(self.odometer_reading) + "公里。")
def update_odometer(self, newodo):
self.odometer_reading = newodo
my_car = Car('Mercedes-Benz', 2020, 'C260L')
print(my_car.get_descriptive_name())
my_car.update_odometer(20)
my_car.read_odometer()
- 通过方法将属性的值进行递增:
class Car():
"""打印汽车的类型"""
def __init__(self, make, year, model):
"""初始化"""
self.make = make
self.year = year
self.model = model
self.odometer_reading = 0
def get_descriptive_name(self):
"""返回汽车的完整信息"""
full_name = str(self.year) + " " + self.make + " " + self.model
return full_name
def read_odometer(self):
print("这辆车已经跑了" + str(self.odometer_reading) + "公里。")
def update_odometer(self, newodo):
self.odometer_reading = newodo
def increment_odometer(self, miles):
self.odometer_reading += miles
8.3 继承
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法。被获取的类称为父类,获取的类称为子类。
class Car():
"""父类"""
def __init__(self, make, year, model):
"""初始化"""
self.make = make
self.year = year
self.model = model
class SonCar(Car):
"""子类"""
def __init__(self, make, year, model):
"""初始化父类的属性"""
super().__init__(make, year, model)
8.3.1 给子类定义特有属性和方法
class Car():
"""父类"""
def __init__(self, make, year, model):
"""初始化"""
self.make = make
self.year = year
self.model = model
class SonCar(Car):
"""子类"""
def __init__(self, make, year, model):
"""初始化父类的属性"""
super().__init__(make, year, model)
# 子类特有的属性
self.battery_size = 70
def describe_battery(self):
"""子类特有的方法"""
print("这辆电动汽车的电瓶容量是:" + str(self.battery_size))
8.3.2 重写父类的方法
对于父类的方法,只要它不符合子类模拟的实物的行为,就可以对其进行重写。可在子类中定义一个这样的方法,即它与要重写的父类的方法同名。