Python编程从入门到实践-----第9章 类

1、创建和使用类

  以下创建Dog类:
在这里插入图片描述
  下面是关于py中的类的一些介绍:类中的函数称为方法,前面所学的函数的一切都适用,只是调用的方式不同,方法__init__()是一个特殊的方法,每次根据Dog类创建新实例时都会自动运行,类似与C++中的构造函数,在这个方法的名称中开头和末尾各有两个下划线,这是一种约定,避免默认方法和普通方法发生名称冲突。同时这种方法中的形参self必不可少,也必须位于其他形参之前。py调用__init__()创建Dog()实例,将自动传入实参self,每个与类相关联的方法调用都是自动传递实参self,它是指向一个实例本身的引用,让实例可以访问类中的属性和方法,
  init()方法中两个变量都有前缀self,以self为前缀的变量都可供类中的所有方法使用,可以通过类的任何实例来访问这些变量。可以通过实例访问的变量称为属性。
  根据类创建实例:
在这里插入图片描述
注意__init__()前后的下划线分别为两个。运行程序得到结果:
在这里插入图片描述
上面代码隐含了很多类中的知识,比如访问实例的属性可以使用句点表示法,调用方法也是可以使用句点表示,如下:
在这里插入图片描述
可以根据需求创建多个实例。

2、使用类和实例

  这一节使用另一个类如下:
在这里插入图片描述
输出为:
在这里插入图片描述
  类中的每个属性都必须有初始值,哪怕值为0或空字符串,在有些情况下如设置默认值,可以在__init()__内指定这种初始值是可行的,如果这样做则无需包含初始值形参。如下:
在这里插入图片描述  当创建新实例,在和之前一样的属性存储之后,还会创建一个odometer_reading的属性,同时将初始值设为0。同时还需要提供修改该属性的途径。
  可以用三种不同的方式修改属性的值,以下分别实现:
  通过实例直接访问,修改。
在这里插入图片描述
  通过方法修改属性的值,可以在类内部定义一个方法,对属性的值进行更新。在属性值更新程序里还可以对属性进行限制。
在这里插入图片描述
  通过方法是属性递增。
在这里插入图片描述

3、继承

  编写类时并非总是从空白开始,可以使用继承,一个类继承另一个类时,他将自动获得另一个类的所有属性和方法,原有的类称为父类,新的类称为子类。子类继承其父类的所有属性和方法,同时还可以定义自己的属性和方法。
  创建子类实例时,需要首先完成的任务是给父类的所有属性赋值。在这里插入图片描述
  创建子类时,父类必须包含在当前文件,并且位于子类之前,之后定义了子类,定义子类时必须在括号内指定父类的名称,方法__init__()接收创建Car实例所需要的信息。super()函数将父类与子类关联起来,这行代码让python调用父类的__init__()方法,父类也称为超类。
  一个类继承另一个类之后,可以区分子类和父类所需要的新属性和方法。在这里插入图片描述
  对于父类的方法,只要不符合子类模拟实物的行为,都可以进行重写,为此,可以在子类中定义一个与要重写的父类方法同名的方法。只需要在子类中重新定义一个与父类中需要重写的函数名相同的函数即可。
  如果给类添加的细节越来越多,有时可以将类的一部分作为一个独立的类提取出来。
在这里插入图片描述
  定义了一个新类,并且在ElectricCar中添加了一个self.battery属性,也就是创建了一个Battery实例。

4、导入类

  类同样可以存储在模块中,然后在主程序中导入所需要的模块。以上面的代码为例,可以将Car类存储在名为car.py的模块中,如下图可以导入类。
在这里插入图片描述
  一个模块里可以存储多个类,在使用时在import后改为别的类即可。导入类的方式和之前导入函数方式差不多。

# 从一个模块中导入多个类
from car import Car,ElectricCar
# 导入整个模块
import car
# 导入所有类,这种方式不推荐,需要很多类时使用导入整个模块。
from car import *
# 在一个模块中导入另一个模块
from car import Car

  自定义工作流程,可以在项目开始时就尝试将类存储模块中。

5、python标准库

  标准库其实就是一组模块,安装的python都包含它。

6、类编码风格

  类命名应采用驼峰命名法。
  对于每一个类都应该在类定义后包含一个文档字符串,简要描述类的功能,并遵循编写函数文档字符串时采用的格式约定,每个模块也应该包含一个文档描述。
  可以使用空行来组织代码,但不要滥用,在类中可以使用一个空行来分隔方法,在模块中可以使用两个空行来分隔类。
  需要同时导入标准库的模块和你编写的模块时,先编写导入标准库再导入自己编写的模块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值