Python描述符的两种类型

美女程序员鼓励师

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 "<Student: {}, math:{}, chinese: {},>".format(

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

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

本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

以上是 Python描述符的两种类型 的全部内容, 来源链接: utcz.com/z/543849.html

回到顶部