《Python编程:从入门到实践(第二版)》自学笔记(十八)

使用类和实例

之前已经接触过如何去创建类,接下来创建完之后就是用。首先对于已创建的类,想要为其添加属性的默认值,此想法是可行的 ,可以在初始化时,直接进行定义

1
2
3
4
5
6
7
class Car:
def __init__(self, make, model, year):
"""初始化描述汽车的属性。"""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0

这里形参仅仅只有make、model、year,但是在具体代码块中涉及属性odometer_reading,且初始化设定的值为0,但此做法是有一定的局限性,只有新车的公里数才会默认为0,但凡是开过的车,公里数都会随时间的变化,所以这里就涉及到修改属性的值。

对于修改属性的值,有三种方式,如下所展示的

1.直接修改属性的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 = f"{self.year} {self.make} {self.model}"
return long_name.title()

def read_odometer(self):
"""打印一条指出汽车里程的消息。"""
print(f"This car has {self.odometer_reading} miles on it.")

my_new_car = Car('audi', 'a4', 2019)
print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading = 23
my_new_car.read_odometer()
输出:
2019 Audi A4
This car has 23 miles on it.

属性odometer_reading的值由原先默认的0被修改成23

2.通过方法修改属性的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 = f"{self.year} {self.make} {self.model}"
return long_name.title()

def update_odometer(self, mileage):
"""将里程表读数设置为指定的值。"""
self.odometer_reading = mileage

def read_odometer(self):
"""打印一条指出汽车里程的消息。"""
print(f"This car has {self.odometer_reading} miles on it.")

my_new_car = Car('audi', 'a4', 2019)
print(my_new_car.get_descriptive_name())

my_new_car.update_odometer(23)
my_new_car.read_odometer()
输出:
2019 Audi A4
This car has 23 miles on it.

这里直接在类里面从新定义了一个方法update_odometer,并直接对方法进行赋值,来更新属性odometer_reading的值,让其在方法内部实现值变化的运算,后续再调用的过程中直接将实参传递进去即可

3.通过方法对属性的值进行递增

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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 = f"{self.year} {self.make} {self.model}"
return long_name.title()

def update_odometer(self, mileage):
"""将里程表读数设置为指定的值。"""
self.odometer_reading = mileage

def read_odometer(self):
"""打印一条指出汽车里程的消息。"""
print(f"This car has {self.odometer_reading} miles on it.")

def increment_odometer(self, miles):
"""将里程表读数增加指定的量。"""
self.odometer_reading += miles

my_used_car = Car('subaru', 'outback', 2015)
print(my_used_car.get_descriptive_name())

my_used_car.update_odometer(23500)
my_used_car.read_odometer()

my_used_car.increment_odometer(100)
my_used_car.read_odometer()
输出:
2015 Subaru Outback
This car has 23500 miles on it.
This car has 23600 miles on it.

这里是同样的定义了个新的方法increment_odometer,并将其属性miles的值,加上原先odometer_reading的值,重新再赋值给odometer_reading,同样的也是在类中的方法直接完成运算

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2019-2024 Carrol Chen
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信