下面的代码来自这个repo。它随附在 Python 3 编程:Python 语言的完整介绍(开发人员库)一书中。
这部分代码展示了使用装饰器valid_number
来强制minimum
和的maximum
值。price
quantity
StockItem
@valid_number('price', minimum=0, maximum=1e6)
@valid_number('quantity', minimum=1, maximum=1000)
class StockItem:
def __init__(self, name, category, price, quantity):
self.name = name
self.category = category
self.price = price
self.quantity = quantity
就我而言,我有一个具有两个具有相同约束的属性的类,所以装饰器看起来像:
@valid_number('price', minimum=0, maximum=1e6)
@valid_number('quantity', minimum=0, maximum=1e6)
class StockItem:
...
我希望能够写出类似...
@valid_number(['price','quantity'], minimum=0, maximum=1e6)
将约束应用于这两个属性。我仍在研究装饰器和描述符的所有细微差别,所以我不知道这是否可能。描述符和装饰器的完整实现在repo中。