【Python】入门学习十一 类

在面向对象编程中,我们通过编写表示现实世界中的事物或场景的类,并基于这些类创建对象。在类中我们定义了一大类对象都有的通用行为,基于类创建对象时,每个类自动具备这种通用行为,然后可以根据需要赋予每个对象独特的个性。

根据类创建对象叫做实例化。


 

1、创建类

使用类几乎可以让我们模拟任何东西,下面编写一个表示餐厅的Restaurant类,它表示的不是特定的餐厅,而是任何餐厅。

class Restaurant():

    def __int__(self, restaurant_name, cuisine_type):
        self.name = restaurant_name
        self.type = restaurant_type

    def describe_restaurant(self):
        print("This restaurant's name is " + self.name.title() +".")
     print("This restaurant is " + self.type + "restaurant.") def open_restaurant(self): print("This restaurant is open now.")

实例化:first_restaurant = Restaurant('Peace Restaurant', Chinese)、second_restaurant = Restaurant('Summer', Italian)

访问属性:first_restaurant.name、second_restaurant.type

调用函数:first_restaurant.describe_restaurant()、second_restaurant.open_restaurant()

2、修改类中的属性值

我们创建一个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 = 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_new_car = Car('audi', 'a4', 2016)

修改属性odometer_reading 的值,有以下两种方法可以实现:
①直接修改:my_new_car.odometer_reading = 23

②通过在类中定义函数,比如将里程表读数设置为指定值,还可以通过函数使读数增加一定的值:

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

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

 

3、继承

编写类时,并非总是要从零开始,如果你要编写的类是另一个类的特殊版本,可以使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法,原有的类叫父类,新类称为子类。当然,长江后浪推前浪,子类可以定义自己的属性和方法。

继承通过class 子类名(父类名): 的形式来实现,比如新建一个电动汽车类ElectricCar继承上面的Car类:

class ElectricCar(Car):
    """电动汽车的独特之处"""
    def__init__(self, make, model, year):
        """初始化父类的属性"""
        super().__init__(make, model, year)

super()是一个特殊函数,能够帮助Python将父类和子类关联起来。这行代码让Python调用父类的__init__(),使子类实例包含父类的所有属性。

 

上一篇:「洛谷1600」「NOIP2016提高组」天天爱跑步【树上差分】


下一篇:类的模板导入