python学习笔记4

本文介绍了Python中的继承概念,包括单继承和多继承,展示了如何使用super函数。讨论了私有属性和方法以及多态性的实现。接着讲解了异常处理,包括捕获特定异常和异常传递,并给出了实例。最后,文章涵盖了模块的使用,包括导入模块和包的方法,以及自定义异常的创建。
摘要由CSDN通过智能技术生成

单继承:

#1.师傅类,属性和方法
class Master(object):
    def __init__(self):
        self.kongfu = '[古法煎饼果子配方]'

    def make_cake(self):
        print(f'运用{self.kongfu}制作煎饼果子')

#2.定义徒弟类,继承师傅类
class Prentice(Master):
    pass

daqiu = Prentice()

print(daqiu.kongfu)

daqiu.make_cake()

多继承:

#1.师傅类,属性和方法
class Master(object):
    def __init__(self):
        self.kongfu = '[古法煎饼果子配方]'

    def make_cake(self):
        print(f'运用{self.kongfu}制作煎饼果子')

#为了验证多继承,添加School父类

class School(object):
    def __init__(self):
        self.kongfu = '[黑马煎饼果子配方]'

    def make_cake(self):
        print(f'运用{self.kongfu}制作煎饼果子')

#2.定义徒弟类,继承师傅类和学校类

class Prentice(Master,School):
    pass

daqiu = Prentice()

print(daqiu.kongfu)

daqiu.make_cake()

#如果一个类继承多个属性和方法,那么他优先继承第一个父类的同名属性和方法

super函数的作用:在子类中调用父类的方法

私有属性和私有方法的定义:self.__

它们不能继承

多态性:

#需求:警务人员和警犬一起工作,警犬有:追击敌人、追查毒品

#1.定义父类,提供公共方法:警犬、人
class Dog(object):
    def work(self):
        pass

#2.定义子类,子类重写父类方法,定义2个类表示不同的警犬
class ArmyDog(Dog):
    def work(self):
        print('追击敌人')

class DrugDog(Dog):
    def work(self):
        print('追查毒品')

#定义人类
class Person(object):
    def work_with_dog(self, dog):
        dog.work()


#3.创建对象,调用不同的功能,传入不同的对象,观察执行结果
ad = ArmyDog()
dd = DrugDog()

daqiu = Person()
daqiu.work_with_dog(ad)
daqiu.work_with_dog(dd)

 当传入不同的对象时输出值不同

异常:

捕获单个指定异常类型时:若异常的产生与except后的错误相同时:

try:
    print(num)
except NameError:
    print('有错误')

调试结果:

 可以正常打印。

若异常的产生与except后的错误不同时:会报错

try:
    #print(num)
    print(1/0)
except NameError:
    print('有错误')

 报的错误是本身try下面的语法错误

异常的传递:

#需求1: 尝试只读打开test.txt 文件存在读取内容,不存在提示用户
#需求2: 读取内容,循环读取,当无内容的时候退出循环,如果用户意外终止,提示用户已经被意外终止
import time
try:
    f = open('test.txt')
    #尝试循环读取内容
    try:
        while True:
            con = f.readline()
            # 如果读取完成退出循环
            if len(con) == 0:
                break

            time.sleep(3)
            print(con)
    except:
            #在命令提示符中按ctrl+c结束中止
            print('程序被意外终止')
except:
    print('该文件不存在')

异常可以进行嵌套,先执行外层的try再执行里面的try

自定义异常:

#1.自定义异常类,继承Exception, 魔法方法有init和str(设置异常描述信息)
class ShortInputError(Exception):
    def __init__(self, length, min_len):
        #用户输入的密码长度
        self.length = length
        self.min_len = min_len

    #设置异常描述信息
    def __str__(self):
        return f'您输入的密码长度是{self.length},密码不能少于{self.min_len}'

def main():
#2.抛出异常:尝试执行,用户输入密码,如果长度小于3,抛出异常
    try:
        password = input('请输入密码:')
        if len(password) < 3:
            #抛出异常类创建的对象
            raise ShortInputError(len(password), 3)
    #3.捕获该异常
    except Exception as result:
        print(result)
    else:
        print('没有异常,密码输入完成')

main()

#3.捕获该异常

调试结果:

 

 模块的使用方法:

#需求:math模块下sqrt()开平方计算
'''
1.导入模块
2.测试是否导入成功:调用该模块内的sqrt功能
'''
#方法一:import 模块名; 模块名.功能
#import math

#方法二:from 模块名
#from math import sqrt

#方法三:from 模块名 import *;功能调用(不需要书写模块名.功能)
#from math import *

 all列表:如果一个文件中有__all__变量,当使用from xxx import *导入时,只能导入这个列表中的元素。

导入包:

#方法一
'''
1.导入
import 包名.模块名
2.调用功能
包名.模块名.功能()
'''

#导入mypackage包下的模块1,使用这个模块内的info_print1函数
import mypackage.my_module1
mypackage.my_module1.info_print1()

#方法二:注意设置__init__.py文件里面的all列表,添加的是允许导入的模块
#必须在__init__.py文件中添加__all__ = []
'''
from 包名 import *
模块名.目标
'''
from mypackage import *
my_module1.info_print1()

总结:

导入模块方法导入包
import  模块名import  包名.模块名
from 模块名  import  目标from 包名 import *
from 模块名 import *

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值