Python 学习笔记12 类 - 使用类和实例

当咱们熟悉和掌握了怎么样建立类和实例之后,咱们编程中的大多数工做都讲关注在类的简历和实例对象使用,修改和维护上。编程

结合实例咱们来进一步的学习类和实例的使用:dom

咱们新建一个汽车的类:函数

#-*- coding:utf-8 -*-

class Car():

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def get_description_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()



my_car = Car("audi", "A4", 2016)
print(my_car.get_description_name())

'''
输出:
2016 Audi A4
'''

 

经过上面的例子咱们能够看到,咱们建立了一个car的类,这个类有三个参数,而且有一个打印全部信息的一个方法。学习

咱们知道其实每一个属性都有初始的值,有些时候咱们的属性并非为空或者0,他须要一个默认的其余值。咱们能够在类的__init__方法中,对一些属性进行初始化。一旦属性具备初始值后,在实例化对象时,能够不提供数值。优化

咱们在类中添加一个里程表的属性,他的初始值应该为0,咱们添加一个方法用来读取这个属性。spa

#-*- coding:utf-8 -*-

class Car():

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_description_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_car = Car("audi", "A4", 2016)
print(my_car.get_description_name())
my_car.read_odometer()

'''
输出:
2016 Audi A4
This car has 0 miles on it.
'''

 

咱们能够直接修改实例的属性,来实现我么预想的操做:code

#-*- coding:utf-8 -*-

class Car():

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_description_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_car = Car("audi", "A4", 2016)
print(my_car.get_description_name())
my_car.read_odometer()
my_car.odometer_reading = 100
my_car.read_odometer()
'''
输出:
2016 Audi A4
This car has 0 miles on it.
This car has 100 miles on it.
'''

 

也能够经过添加特定方法来实现对实例属性的修改:对象

#-*- coding:utf-8 -*-

class Car():

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_description_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_car = Car("audi", "A4", 2016)
print(my_car.get_description_name())
my_car.read_odometer()
my_car.update_odometer(200)
my_car.read_odometer()
'''
输出:
2016 Audi A4
This car has 0 miles on it.
This car has 200 miles on it.
'''

 

我么知道里程数通常都是递增的,正常状况下咱们是没法将其往回调整的,因此咱们须要对update函数进一步的优化。输入的参数必须大于等于当前值,小于则必须报错:blog

#-*- coding:utf-8 -*-

class Car():

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_description_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 cannot do that.")


my_car = Car("audi", "A4", 2016)
print(my_car.get_description_name())
my_car.read_odometer()

my_car.update_odometer(200)
my_car.read_odometer()

my_car.update_odometer(100)
my_car.read_odometer()
'''
输出:
2016 Audi A4
This car has 0 miles on it.
This car has 200 miles on it.
You cannot do that.
This car has 200 miles on it.
'''

 

 

根据现实中的状况,其实咱们定义一个增量方法更为合适,该方法每次都加上参数给定的值,而且该值应该大于等于0:ip

#-*- coding:utf-8 -*-

class Car():

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_description_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 cannot do that.")

    def increase_odometer(self, miles):
        if miles >= 0:
            self.odometer_reading += miles
        else:
            print("The value is invalid, please input the number which should more than zero.")


my_car = Car("audi", "A4", 2016)
print(my_car.get_description_name())
my_car.read_odometer()

my_car.update_odometer(200)
my_car.read_odometer()

my_car.increase_odometer(100)
my_car.read_odometer()

my_car.increase_odometer(-1)
my_car.read_odometer()
'''
输出:
2016 Audi A4
This car has 0 miles on it.
This car has 200 miles on it.
This car has 300 miles on it.
The value is invalid, please input the number which should more than zero.
This car has 300 miles on it.
'''
相关文章
相关标签/搜索