Код ниже от этого репо . Она сопровождает книгу Программирование на 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)
, чтобы применить ограничение к обоим атрибутам. Я все еще прорабатываю все нюансы декораторов и дескрипторов, поэтому я не знаю, возможно ли это. Полная реализация дескриптора и декоратора находится в репо .