初学者python笔记(类的装饰器、property方法、元类)


本篇是面向对象编程的进阶知识,内容稍微有点抽象,但是每处都标足了注释和运行结果,可以参考着学习。内容主要涉及上下文协议管理、类的装饰器使用、property方法、元类四个方面

上下文协议管理

就是with … as …这种方式的使用原理

class Foo:
    def __init__(self,name,age):
        self.name= name
        self.age= age

    def __enter__(self):  #当调用类Foo时就会触发__enter__方法
        print('__enter__正在被触发')
        return self  #将类Foo的属性作为返回值

    def __exit__(self,exc_type,exc_val,exc_tb):  #self后的三个参数为必要属性
        print('执行__exit__')
        #当整个类执行完毕以后就会触发exit的运行,
        #或者执行过程中出现了异常也会触发exit方法的运行,并停止程序的运行
   
        #但若返回一个True就不会停止整个程序的运行,只是停止类的执行,后续代码可以继续执行
        return True

with Foo('a.txt',18)  as f:  #只要调用了with Foo...就是触发__enter__
    #将一个文件传入Foo中,因为返回值是self属性,所以f就代表了self
    print(f.name)  #可直接调用,相当于self.name
    
    #一个错误语句
    print(djksjsgg)

#with ... as ...就是上下文协议管理,打开文件也是这个原理,当文件执行完毕后会自动关闭
with open('a.txt','r',encoding='gbk') as fi:
    re = fi.read()
    print(re)

print('===============》》》结束')

运行结果:
上下文协议管理

类的装饰器基本原理

要知道,在Python中,一切皆对象;所以装饰器不仅可以修饰函数,还可以修饰类;可以用函数来定义,也可以用类(描述符)来定义

#定义一个装饰器(本质上就是个修饰函数的函数)
def adorn1(func)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值