python描述符实现,Python描述符的两种类型

本文介绍了Python中的两类描述符:数据描述符和非数据描述符。数据描述符通过实现__get__和__set__方法,而非数据描述符仅实现__get__方法。通过示例展示了如何在类中使用这两种描述符,并创建了Student类,其中math属性为数据描述符,chinese属性为非数据描述符,展示了它们在访问和赋值时的不同行为。
摘要由CSDN通过智能技术生成

82119f802f574409503598857531354c.png

1、分类

数据描述符:实现了__get__ 和 __set__ 两种方法的描述符

非数据描述符:只实现了__get__ 一种方法的描述符

2、实例# 数据描述符

class DataDes:

def __init__(self, default=0):

self._score = default

def __set__(self, instance, value):

self._score = value

def __get__(self, instance, owner):

print("访问数据描述符里的 __get__")

return self._score

# 非数据描述符

class NoDataDes:

def __init__(self, default=0):

self._score = default

def __get__(self, instance, owner):

print("访问非数据描述符里的 __get__")

return self._score

class Student:

math = DataDes(0)

chinese = NoDataDes(0)

def __init__(self, name, math, chinese):

self.name = name

self.math = math

self.chinese = chinese

def __getattribute__(self, item):

print("调用 __getattribute__")

return super(Student, self).__getattribute__(item)

def __repr__(self):

return "".format(

self.name, self.math, self.chinese)

以上就是Python描述符的两种类型,希望对大家有所帮助。更多Python学习推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值