创建Car类

这篇博客介绍了如何在Python中创建一个Car类,包括初始化方法__init__,用于设置汽车的制造商、型号和年份。此外,还讨论了如何定义get_descriptive_name()方法来获取描述性的汽车名称,以及如何为属性如odometer_reading设置默认值并提供方法来修改和递增其值。示例中展示了如何创建实例,通过实例直接或通过方法修改属性,并提供了增量方法increment_odometer()的应用。
部署运行你感兴趣的模型镜像

使用类和实例

                                                                             作者:雷蕾

先来看一个表示汽车的类,它存储了有关汽车的信息以及汇总这些信息的方法:

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

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

好的,以下是创建Car的对象、引用属性和方法的示例代码: ```python # 定义Car 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.") 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 # 创建Car的对象 my_car = Car('audi', 'a4', 2021) # 引用属性 print(my_car.make) print(my_car.model) print(my_car.year) # 引用方法 print(my_car.get_descriptive_name()) my_car.update_odometer(10000) my_car.read_odometer() my_car.increment_odometer(500) my_car.read_odometer() ``` 输出结果为: ``` audi a4 2021 2021 Audi A4 This car has 10000 miles on it. This car has 10500 miles on it. ``` 可以看到,我们首先定义了一个名为`Car`的,然后通过`__init__`方法初始化了该的属性,其中包括`make`、`model`、`year`和`odometer_reading`。接下来,我们定义了一些方法,包括`get_descriptive_name`、`read_odometer`、`update_odometer`和`increment_odometer`,这些方法分别用于返回车辆的描述信息、读取里程表数据、更新里程表数据和增加里程表数值。最后,我们创建了一个`my_car`对象,并通过调用对象的属性和方法来引用这些属性和方法。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值