目录

  • 1 前言
    • 1.1  Python解释器安装
    • 1.2  PyCharm开发环境
  • 2 Python程序设计实验
    • 2.1  实验1 基本输入输出
    • 2.2  实验2 基本运算
    • 2.3  实验3 字符串处理
    • 2.4  实验4 列表与元组应用
    • 2.5  实验5 列表与元组应用
    • 2.6  实验6 字典与集合应用
    • 2.7  实验7 函数应用1
    • 2.8  实验8 函数应用2
    • 2.9  实验9 类的创建与应用
    • 2.10  实验10 模块应用
    • 2.11  实验11 文件操作
    • 2.12  实验12 异常处理
    • 2.13  实验13 使用正则表达式
    • 2.14  实验14 tkinter基础应用
  • 3 学习参考
    • 3.1  1 Python及其IDLE环境
    • 3.2  2 Python代码规范
    • 3.3  3 使用变量
    • 3.4  4 输入输出
    • 3.5  5 运算符
    • 3.6  6 字符串
    • 3.7  7 条件语句
    • 3.8  8 循环语句
    • 3.9  9 列表
    • 3.10  10 元组
    • 3.11  11 字典
    • 3.12  12 集合
    • 3.13  13 自定义函数
    • 3.14  14 内置函数
    • 3.15  15 类的创建和使用
    • 3.16  16 类的继承与多态
    • 3.17  17 time模块
    • 3.18  18 os模块
    • 3.19  19 random模块
    • 3.20  20 文件
    • 3.21  21 错误与异常处理
 16 类的继承与多态

1、类的继承

(1)基于已有类(称为父类或基类)创建新类(称为子类或派生类)。格式:

    class 子类名(基类名):

(2)子类只能继承父类的公有成员

(3)子类可重写父类的方法

    如果子类没有重写__init__方法,则子类实例化时自动调用父类的__init__方法。

    如果子类已重写__init__方法,则子类实例化时不调用父类的__init__方法。

(4)在子类中可通过“父类名.方法名()”调用父类的方法(需传递self参数)。

(5)可以同时继承多个父类创建子类。


2、类的多态:

    一个子类实例的数据类型既是子类,也是父类。如:

class Animal():

    def run(self):print("Animal is running...")

class Cat(Animal):#根据父类Animal创建子类Cat

    def run(self):print("Cat is running...")#重写父类的run方法

cat=Cat()#cat既是Cat数据类型,也是Animal数据类型。


3、运算符重载

    可以通过运算符重载实现对象运算。常用运算符重载的方法有:

__add__(self,x):加法(self+x)。

__sub__(self,x):减法(self-x)。

__mul__(self,x):乘法(self*x)。

__truediv__(self,x):除法(self/x)。

__floordiv__(self,x):整除(self//x)。

__mod__(self,x):求余(self%x)。

__pow__(self,x):幂运算(self**x)。

注:以上重载方法对应的反向运算符只需以r开头即可。

    例如,__radd__(self,x):加法(x+self)。

__lt__(self,x)、 __gt__(self,x):小于(self<x)、大于(self>x)。

__le__(self,x)、__ge__(self,x):小于等于(self<=x)、大于等于(self>=x)。

__eq__(self,x)、__ne__(self,x):等于(self==x)、不等于(self!=x)。

__contains__(self,x):成员关系测试(self in x)。


4、可迭代对象(Iterable)

(1)Python中经常使用for来对某个对象进行遍历,此时被遍历的这个对象就是可迭代对象。list、tuple、dict、set、str、生成器,都是可迭代对象。

(2)通过类创建可迭代对象

    在类的定义中,定义了可以返回一个迭代器的__iter__方法,或者定义了可以支持下标索引的__getitem__方法,那么它就是一个可迭代对象。

示例:

class Geometricseries(): #可生成等比序列

    def __init__(self,a,n,q): #a为首项、n为项数、q为公比

        self.a=a

        self.n=n

        self.q=q

    def __getitem__(self,k): #实现切片和索引

        v=[self.a*self.q**i for i in range(self.n)]

        return v[k]

x=Geometricseries(1,10,2)#创建首项为1、项数为10、公比为2的等比数列

print(sum(x[0::2])) #输出数列奇数项的和