使用类和实例
作者:雷蕾
先来看一个表示汽车的类,它存储了有关汽车的信息以及汇总这些信息的方法:
class Car:
'''一次模拟汽车的简单尝试'''
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
def get_descriptive_name(self):
'''返回整洁的描述性信息'''
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
my_car=Car('audi','a4',2019)
print(f"my car is {my_car.get_descriptive_name()}")
在这个示例中,我们定义了方法__init__()。与前面的Dog类一样,这个方法的第一个形参为self,该方法还包括另外的三个形参:model、make和year,方法__init__接受这些形参的值,并将它们赋给根据这个类创建的实例的属性,创建新的Car实例时,需要指定其制造商make,型号model和生产年份year。
除此之外,我们还定义了get_descriptive_name()的方法,它使用属性model、make和year创建一个对汽车进行描述的字符串,为了在这方法中访问属性的值,使用了self.year}、self.make、 self.mode。
my_car=Car(‘audi’,‘a4’,2019)是根据Car类创建了一个实例,并将其赋给变量my_car,之后调用方法get_descriptive_name()。
看看运行结果是不是调用get_descriptive_name方法来描述我们拥有一辆什么样的车:
my car is 2019 Audi A4
给属性指定默认值:
创建实例时,有些属性无须通过形参来定义,可在方法__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(self):
'''返回整洁的描述性信息'''
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
'''读取里程数'''
print(f"this car's meter is {self.odometer_reading} miles on it")
my_car=Car('audi','a4',2019)
print(f"my car is {my_car.get_descriptive()}")
my_car.read_odometer()
在上述示例中,我们添加了一个属性名为odometer_reading,并将它的值默认为0,此外,我们还添加了一个方法read_odometer()。
my car is 2019 Audi A4
this car's meter is 0 miles on it
修改属性的值:
我们还可以对所添加的属性odometer_reading的值进行修改。
(1)通过实例直接修改属性值
class Car:
'''一次模拟汽车的简单尝试'''
def __init__(self,make,model,year):
self.make=make
self.model=model
self.year=year
self.odometer_reading=0
def get_descriptive(self):
'''返回整洁的描述性信息'''
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
'''读取里程数'''
print(f"this car's meter is {self.odometer_reading} miles on it")
my_car=Car('audi','a4',2019)
print(f"my car is {my_car.get_descriptive()}")
my_car.read_odometer()
my_car.odometer_reading=23
my_car.read_odometer()
我们通过添加代码行my_car.odometer_reading=23对odometer_reading的值进行修改,从运行结果可以看出,odometer_reading的值从0变为23。
my car is 2019 Audi A4
this car's meter is 0 miles on it
this car's meter is 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(self):
'''返回整洁的描述性信息'''
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
'''读取里程数'''
print(f"this car's meter is {self.odometer_reading} miles on it")
def update_odometer(self,mileage):
'''将里程数设置为指定的值'''
self.odometer_reading=mileage
my_car=Car('audi','a4',2019)
print(f"my car is {my_car.get_descriptive()}")
my_car.read_odometer()
my_car.update_odometer(23)
my_car.read_odometer()
在这个示例中,我们添加了新方法update_odometer(),这个方法接受给形参’mileage’的值,并将值赋给 self.odometer_reading。
代码行my_car.update_odometer(23)是我们调用了方法update_odometer(),并向它提供实参23,运行结果与上述示例一样。
my car is 2019 Audi A4
this car's meter is 0 miles on it
this car's meter is 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(self):
'''返回整洁的描述性信息'''
long_name=f"{self.year} {self.make} {self.model}"
return long_name.title()
def read_odometer(self):
'''读取里程数'''
print(f"this car's meter is {self.odometer_reading} miles on it")
def update_odometer(self,mileage):
'''将里程数设置为指定的值'''
self.odometer_reading=mileage
def increment_odometer(self,miles):
'''将里程数增加指定的量'''
self.odometer_reading+=miles
my_car=Car('audi','a4',2019)
print(f"my car is {my_car.get_descriptive()}")
my_car.read_odometer()
my_car.update_odometer(23)
my_car.read_odometer()
my_car.increment_odometer(10)
my_car.read_odometer()
示例中,我们添加一个新方法increment_odometer(),它接受给形参’miles’的值,并将值加入 self.odometer_reading中。
代码行my_car.increment_odometer(10)调用方法increment_odometer()并传入10,我们看看运行结果是不是变成了33(23+10):
my car is 2019 Audi A4
this car's meter is 0 miles on it
this car's meter is 23 miles on it
this car's meter is 33 miles on it
这篇博客介绍了如何在Python中创建一个Car类,包括初始化方法__init__,用于设置汽车的制造商、型号和年份。此外,还讨论了如何定义get_descriptive_name()方法来获取描述性的汽车名称,以及如何为属性如odometer_reading设置默认值并提供方法来修改和递增其值。示例中展示了如何创建实例,通过实例直接或通过方法修改属性,并提供了增量方法increment_odometer()的应用。
1488

被折叠的 条评论
为什么被折叠?



