作业,,,,,,,,,,,,啊啊啊啊啊

本文讲解了Python中函数的重写、类的继承机制以及如何在子类中重写父类函数。同时介绍了装饰器的使用,包括装饰函数和装饰类,以及单例类的实现。最后提到了异常处理的基本概念和try-except-finally语句的应用。
摘要由CSDN通过智能技术生成
#函数的重写
#在继承的前提下,如果在子类中重新实现了父类的函数
#如果在一个类中有很多子类,大多数子类可以直接使用父类中实现的功能
#但是如果父类中实现的需求满足不了部分子类的使用,则需要在子类中重写函数
#重写的注意事项
#保留函数的声明部分:def xxx(self,形参列表)
#重新实现函数的实现部分[循环体]
#例子
# class Animal():
#     def style(self):
#         print("walk")
# class dog(Animal):
#         pass
# class bird(Animal):
#     def style(self):#子类中重写的函数必须要和父类函数重名
#         print("fly")
#
# class fish(Animal):
#     def style(self):
#         # super(fish,self).style()#继承方式一
#         super().style()#继承方式二
#         # Animal.style(self)#继承方式三
#         print("swimming")
#
# #如果子类未重写父类的函数,则子类可以继承父类中的函数
# #如果子类重写了父类中的函数,子类对象将默认调用子类重写之后的函数
# #子类重写后,如果仍要用父类中的函数的功能,则可以在子类函数中调用父类函数
# d=dog()
# d.style()
# print("")
# e=bird()
# e.style()
# print("")
# x=fish()
# x.style()
class Student():
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __str__(self):#__str__系统函数,该函数的返回值就是在内存中的地址
        return f"{self.name}"#对__str__的重写,将它在类中的返回值改为f"{self.name}"
    # def __repr__ (self):
    #     return f"{self.name}"
    #一般__str__和__repr__一起使用
    #先设定__str__的返回值
    #然后给__repr__赋值__str__即可
    __repr__ =__str__
sss=Student("张三",20)
print(sss)
#注意:将对象添加到列表中,直接打印容器,默认仍然显示地址,所以此时要重写__repr__
# q=[sss]
# print(q)
#装饰器不但能装饰函数还能装饰类
#装饰器装饰函数
# def check1(func):#在这里func表示被装饰的函数
#     def check2():
#         func()
#         print("装饰器-111111111111111")
#     return check2
# @check1
# def check3():
#     print("被装饰的函数-222222222")
# check3()
# print("*"*50)
# #函数装饰类
# def ppp1(cls):#参数命名:cls表示被装饰的类
#     def ppp2():
#         cls("李四",20)#创建对象
#         a=cls("李四",20)
#         print(a.name)
#         return "&&"*20
#     return ppp2
# @ppp1#调用外部函数ppp1
# class Class():
#     def __init__(self,name,age):
#         self.name=name
#         self.age = age
#         print("类-ccccccc(被装饰)")
# aaaa=Class()#创建对象,并且调用函数
# print(aaaa)
#如果两个变量中存储的数据的地址相同,则说明两个变量存储的是同一个对象
#方法1:p1 is p2
#方法二:id(p1)==id(p2)
#
# class Person():
#     def __init__(self,name,age):
#         self.name=name
#         self.age = age
# p1 = Person("人类1",10)
# p2 = Person("人类2",14)
# print(p1 is p2)#第一种方法
# print(id(p1)==id(p1))#第二种方法
# print("*"*100)
# #单例类
# #需求:书写一个装饰器,使得任意一个类都成为装饰器
# def ppp1(cls):
#     instance = None#instance,instance(只是一个变量名)装饰被修饰的类可以创建的唯一的对象
#     #None有空的意思,代表改制为一个空对象,或者代表不存在
#     # 这里的instance = None,在第二次进入时不会被重新赋值
#     #在python中,当装饰器被应用到类上并且一直被引用时,外层函数中定义的变量在
#     #内存中是存在的,并且不会被重新赋值
#     #当多次使用装饰器修饰同一个类或方法时,使用的是同一个装饰器函数。并不会重新创建或赋值变量
#     #因此,这个变量在内存中只会存在一份,并且被所有引用到的地方所共享和使用
#     def ppp2(*args,**kward):#先在这里打包
#         nonlocal instance
#         if  instance == None:
#             instance=cls(*args,**kward)#在这里拆包
#         return instance
#     return ppp2
# #在第一次进入时,instance的值被改变为cls(*args,**kward),
# #由于instance,不被改变所以第二次运行时返回的还是的一次(被改变后的)instance
#
# # 要实现单例类则只要控制,该代码只执行一次
# @ppp1#调用外部函数ppp1
# class Class():
#     def __init__(self,name,age):
#         self.name=name
#         self.age = age
# p1=Class("张三",100)
# p2=Class("李四",18)
# print(p1.name,p1.age)
# print(p2.name,p2.age)
#


# 出现错误:抛出异常
# 处理错误:捕获异常
# print('start~~~~')
# try:
#     # 可能存在异常的代码
#     num = int(input("请输入一个数字:"))
#     list1 = [34, 45, 2, 43, 6, 89]
#     print(f"获取到的元素为:{list1[num]}")
# except Exception as e:#如果不知道要发生什么类型的错误就将Exception添加上,Exception是各种错误的父类
# #     # e:异常的描述信息
#     print("错误",e)
# finally:
#     # 任何情况下都会执行,一般 用来进行文件的关闭或者数据库的关闭
#     print('finally~~~')
#
# print('end~~~~~~')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值