90 % 的 Python 开发者不知道的描述符应用

2020-07-08 00:00:00 函数 赋值 描述 实例 第二个

经过篇的讲解,我们已经知道该如何定义描述符,且明白了描述符是如何工作的。

若你还未阅读过上一篇,建议你点击这里学习一下再回来看这篇文章:

Mingle Wong:Python为什么要使用描述符?zhuanlan.zhihu.com

正常人所见过的描述符的用法就是上篇文章提到的那些,我想说的是那只是描述符协议常见的应用之一,或许你还不知道,其实有很多 Python 的特性的底层实现机制都是基于 描述符协议 的,比如我们熟悉的@property@classmethod@staticmethodsuper 等。

先来说说 property 吧。

有了篇的基础,我们知道了 property 的基本用法。这里我直接切入主题,从篇的例子里精简了一下。

class Student:
    def __init__(self, name):
        self.name = name

    @property
    def math(self):
        return self._math

    @math.setter
    def math(self, value):
        if  <= value <= 100:
            self._math = value
        else:
            raise ValueError("Valid value must be in [0, 100]")

相关文章