第9章 类

一、创建和使用类

1.类的作用:类将函数和数据整洁地封装起来,从而让我们能够高效地使用它们。

2.创建类的步骤以及相关知识介绍:

class Dog:
    """进行一次小狗的简单模拟"""
    def__init__(self, name, age):
        """初始化属性"""
        self.name = name
        self.age = age
  
    def sit():
        """模拟小狗收到命令时蹲下"""
        print(f"{self.name} is now sitting.")
     
    def roll_over():
        """模拟小狗收到命令时打滚"""
        print(f"{self.name} rolled over!")

my_dog = Dog('Willam', 12)
my_dog.name
my_dog.sit()

(1)使用class提醒Python正在创建一个类,类的命名应采用驼峰命名法,如果从空白创建类而不使用继承的方法,类的名称后面不用添加括号

(2)编写一个文档字符串,对类的功能进行一个简要说明

(3)定义方法__init__():必不可少

【1】首先要知道一个知识点:类中的函数都称为方法

【2】注意事项:该方法前后一定要加上两个下划线,不要只加一个,方法括号内的形参一定要包括self,后续定义的所有方法都一样,也必须要包括形参self。

【3】__init__()方法的主要功能在于初始化属性,在初始化属性过程中,如果有想要在整个类中都使用的变量可在其名称前面加上前缀self

3.有关类的基本操作

(1)根据类创建实例

(2)使用句点表示法访问属性:注意在访问属性时,如果属性加上了前缀self,访问时也无需把self写出来,直接写单纯的变量名即可

(3)使用句点表示法调用方法

二、使用类和实例

1.给属性设定默认值:如果属性无须通过形参来定义时,可在方法__init__()中为其指定默认值

2.修改属性中的值

class Car:
    """进行一次汽车的简单模拟"""
    def __init__(self, make, model, year):
        """初始化汽车的属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odomter_reading = 0

    def get_descriptive_name(self):
        """返回整洁的描述性信息"""
        long_name = f"{self.year} {self.make} {self.model}"
        return long_name
   
    def read_odometer(self):
        """打印一条指出汽车里程的信息"""
        print(f"This car has {self.odomter_reading} miles on it.")

    def update_odemeter(self, mileage):
        """将里程表中的读数设定为指定的值"""
        if mileage >= self.odomter_reading:
            self.odomter_reading = mileage
 
    def increment_odemeter(self, miles):
        """将里程表读数增加指定的值"""
        self.odomter_reading += miles
       

my_car = Car('audi', 'a4', '2019')
my_car.odomter_reading = 1
my_car.update_odemeter(100)
my_car.increment_odemeter(100) 

(1)直接修改属性中的值:使用句点访问法直接访问属性并对其赋予新值

(2)通过方法进行修改

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

三、继承

1.有关继承的简要说明:在编写类时并非总是要从继承开始。如果编写的类是另一个现成的类的特殊版本时,可以使用继承。一个类继承另一个类时,将自动获得另一个类的所有属性和方法。原有的类称为父类,而新的类称为子类。

2.继承的有关步骤及相关说明:

(1)创建子类时,父类必须包含在当前的文件中,且位于子类的前面

(2)定义子类时,必须在子类的圆括号内指定父类的名称

(3)使用方法__init__()初始化父类的属性

(4)使用函数super调用父类的方法

(5)给子类定义属性和方法

(6)重写父类的方法:如果父类的方法,不完全符合子类模拟实物的行为。可以通过在子类中重新定义一个与父类要重写方法同名的方法

(7)可以使用某个独立的类作为实例,并将其用作其他类的属性

class Car:
    --snip--

class Battery:
    """一次模拟电瓶的简单尝试"""
    
    def __init__(self, battery_size = 75):
        """初始化电瓶的属性"""
        self.battery_size = battery_size

    def describe_battery(self):
        """打印一条描述电瓶容量的信息"""
        print(f"This car has a {self.battery_size}-kwh battery.")

    def get_range(self):
        """打印一条信息,指出电瓶的续航里程。"""
        if self.battery_size == 75:
            range = 260
        elif self.battery_size == 100:
            range = 315
        print(range)

    def upgrade_battery(self):
        """更新电瓶容量"""
        if self.battery_size != 100:
            self.battery_size = 100



class EletricCar(Car):
     """电动汽车的独特之处"""
     def __init__(self, make, model, year):
         super().__init__(make, model, year)
         self.battery = Battery()

四、Python标准库

1.基本认识:Python标准库是一组模块,我们安装的Python都包含它

2.例如random模块,如randint()和choice()函数,randint()函数时将两个整数作为参数,并随机返回一个位于这两个整数之间(含该整数)的整数;choice()函数将一个列表或元组作为一个参数,并随机返回其中的一个元素

五、类编码风格

1.类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,都不使用下划线。实例和模块名都采用小写格式,并在单词之间加上下划线(函数也是一样)

2.对于每一个类,都应紧跟在类的定义后面包含一个文档字符串

3.可使用空行来组织代码,但不要滥用。在类中,可使用一个空行来分隔方法;在模块中,可使用两个空行来分割类

4.需要同时导入标准库中的模块和自己编写的模块时,需先编写导入标准库中的import语句,再添加一个空行,然后编写导入自己编写的模块的import语句。(注意:所有的import语句都应放在文件的开头)

上一篇:关于类的学习(三) — 继承


下一篇:【标准全文】GBT_34015.4-2021_车用动力电池回收利用_梯次利用_第4部分:梯次利用产品标识