python基础课程系列(九)

9.2.使用类和实例
类编写好后,你的大部分时间都将花在使用根据类创建的实例上。你需要执行的一个重要任务是修改实例的属性。你可以直接修改实例的属性,也可以编写方法以特定的方式进行修改。
9.2.1.Car类
下面来编写一个表示汽车的类,它存储了有关汽车的信息.
-------------------------------------------------------
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())
2016 Audi A4

9.2.2.给属性指定默认值
类中的每个属性都必须有初始值,哪怕这个值是 0 或空字符串。在有些情况下,如设置默认值时,在方法 __init__() 内指定这种初始值是可行的;如果你对某个属性这样做
了,就无需包含为它提供初始值的形参。
-------------------------------------------------------
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.')
 ------------------------------------------------------
>>> my_new_car = Car('audi', 'a4', 2016)
>>> print(my_new_car.get_descriptive_name())
2016 Audi A4
>>> my_new_car.read_odometer()
This car has 0 miles on it.

当 Python 调用方法 __init__() 来创建新实例时,将像前一个示例一样以属性的方式存储制造商、型号和生产年份。接下来, Python 将创建一个名为 odometer_reading 的属性,并将其初始值设置为 0.还定义了一个名为 read_odometer() 的方法,它让你能够轻松地获悉汽车的里程。

9.2.3.修改属性的值
可以以三种不同的方式修改属性的值:直接通过实例进行修改;通过方法进行设置;通过方法进行递增(增加特定的值)。

1.直接修改属性的值
要修改属性的值,最简单的方式是通过实例直接访问它。
>>> my_new_car.read_odometer()
This car has 0 miles on it.
>>> my_new_car.odometer_reading = 23
>>> my_new_car.read_odometer()
This car has 23 miles on it.

2.通过方法修改属性的值
如果有替你更新属性的方法,将大有裨益。这样,你就无需直接访问属性,而可将值传递给一个方法,由它在内部进行更新
-------------------------------------------------------
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):
        """将里程表读数设置为指定的值"""
        self.odometer_reading = mileage
-------------------------------------------------------
>>> my_new_car = Car('audi', 'a4', 2016)
>>> print(my_new_car.get_descriptive_name())
2016 Audi A4
>>> my_new_car.read_odometer()
This car has 0 miles on it.
>>> my_new_car.update_odometer(23)
>>> my_new_car.read_odometer()
This car has 23 miles on it.

3.通过方法对属性的值进行递增
有时候需要将属性值递增特定的量,而不是将其设置为全新的值。
-------------------------------------------------------
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_used_car = Car('subaru', 'outback', 2013)
>>> print(my_used_car.get_descriptive_name())
2013 Subaru Outback
>>> my_used_car.update_odometer(23500)
>>> my_used_car.read_odometer()
This car has 23500 miles on it.
>>> my_used_car.increment_odometer(100)
>>> my_used_car.read_odometer()
This car has 23600 miles on it.

猜你喜欢

转载自blog.csdn.net/zhaocen_1230/article/details/81449536