python 类

在面向对象编程中,你编写表示现实世界中的事物和情景的,根据类来创建对象被称为实例化。在编写类时,你定义一大类对象都有的通用行为,每个对象都自动具备这种通用行为。在定义类时,函数都称为方法

创建类和实例1

class Restaurant:  # 在这里,我们定义了一个名为Restaurant的类,根据约定,在Python中,首字母为大写的名称指的就是类

    """一次模式食物店的简单尝试"""  # 我们编写了简单的文档字符串,对这个类的功能进行了简单的描述
    def __init__(self, restaurant_name, cuisine_type): # 设定了三个形参,self必不可少,还必须位于其他形参的前面,此处的方法_init_()是一个特殊的方法,在这个方法的名称中,开头和结尾各有两个下划线,这是一种约定,旨在避免python默认方法与普通方法发生名称冲突
    """初始化属性的restaurant_name和cuisine_type"""
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type
# 上面的两个变量都有前缀self,以self为前缀的变量都可供类中所有的方法使用。我们还可以通过类的任何实例来访问这些变量。self.restaurant_name = restaurant_name获取存储在形参restaurant_name的值,并将其存储在变量restaurant_name中,然后该变量被关联到当前创建的实例。self.cuisine_type = cuisine_type的作用与此类似 

    def describe_restaurant(self):
    """饭店的简单简介"""
        print("\nThe name of the restaurant is: " + self.restaurant_name)
        print("The food is the restaurant is: " + self.cuisine_type)

    def open_restaurant(self):
    """饭店的经营时间"""
        print(self.restaurant_name.title() + " is opening for 24 hours.")

"""创建了一个实例,通常认为首写字母大写的名称指的是类,而小写的名称指的是根据类创建的实例"""  
restaurant = Restaurant("hai_di_tao", "hotpot")
"""根据类创建实例后,要调用类的方法时,可指定实例的名称和要调用的方法,并用句点分隔它们"""
restaurant.describe_restaurant() 
restaurant.open_restaurant()

"""创建了另一个实例"""
restaurant = Restaurant("guangzhou_jiu_jia", "canton_food")
restaurant.describe_restaurant()
restaurant.open_restaurant()

///运行结果为:
The name of the restaurant is: hai_di_tao
The food is the restaurant is: hotpot
Hai_Di_Tao is opening for 24 hours.

The name of the restaurant is: guangzhou_jiu_jia
The food is the restaurant is: canton_food
Guangzhou_Jiu_Jia is opening for 24 hours.

给属性指定默认值

在有些情况下,可以在方法_init_() 内给某个属性指初始值,如果你对某个属性这样做了,就无需包含为它提供初始值的形参,如下

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0 # 设定odometer_reading属性的初始值为o, 
        
    def get_descriptive_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        print(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)
my_new_car.get_descriptive_name()
my_new_car.read_odometer()

//运行结果为:
2016 Audi a4
This car has 0 miles on it.

修改属性的值

以三种不同的方式修改属性的值:最简单的方式就是直接通过实例进行修改;通过方法进行设置;通过方法进行递增(增加特定的值)

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_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        print(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)
my_new_car.odometer_reading = 23 # 这行代码让python在实例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
        print(long_name.title())

    """添加了方法update_odometer(), 这个方法接受一个里程值,并将其存储到self.odometer_reading中"""
    def update_odometer(self, mileage):
        self.odometer_reading = mileage
        
    def read_odometer(self):
        print("This car has " + str(self.odometer_reading) + " miles on it.")

my_new_car = Car('audi', 'a4', 2016)
my_new_car.update_odometer(23) #  这行代码调用了update_odometer(),并向它提供了实参23(该实参对应于方法定义中的形参mileage)
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
        print(long_name.title())

    def update_odometer(self, mileage):
        self.odometer_reading = mileage

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

    def read_odometer(self):
        print("This car has " + str(self.odometer_reading) + " miles on it.")



my_new_car = Car('audi', 'a4', 2016)

my_new_car.update_odometer(2300)
my_new_car.read_odometer()

my_new_car.increment_odometer(100)
my_new_car.read_odometer()

// 运行的结果:
This car has 2300 miles on it.
This car has 2400 miles on it.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值