90 % 的 Python 开发者不知道的描述符应用
经过篇的讲解,我们已经知道该如何定义描述符,且明白了描述符是如何工作的。
若你还未阅读过上一篇,建议你点击这里学习一下再回来看这篇文章:
Mingle Wong:Python为什么要使用描述符?正常人所见过的描述符的用法就是上篇文章提到的那些,我想说的是那只是描述符协议常见的应用之一,或许你还不知道,其实有很多 Python 的特性的底层实现机制都是基于 描述符协议
的,比如我们熟悉的@property
、@classmethod
、@staticmethod
和 super
等。
先来说说 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]")
相关文章