2024-10-03 02:47:03 发布
网友
我有一个包含少量实例变量的类,我通过用@someinstancevariable.setter修饰符修饰的函数来设置这些变量。如何确保设置的值有一个可以设置的最大值和最小值?我需要有多个decorator吗?或者有什么方法可以使用常规的@someinstancevariable.setterdecorator并重写它?你知道吗
@someinstancevariable.setter
请注意,property实际上是descriptor的一个特定实现,您可以使用自己的实现:
property
class ValidRange(object): def __init__(self, name, min_, max_): self._min = min_ self._max = max_ self._name = name def __get__(self, instance, owner): return getattr(instance, self._name) def __set__(self, instance, value): setattr(instance, self._name, min(self._max, max(value, self._min))) def __delete__(self, instance): delattr(instance, self.name)
其用法如下:
>>> class Weather(object): ... temperature = ValidRange('_temp', 0, 100) ... >>> w = Weather() >>> w.temperature = 120 >>> w.temperature 100
我发布了一个更奇特的描述符方法here,带有自动name设置。。。你知道吗
name
请注意,
property
实际上是descriptor的一个特定实现,您可以使用自己的实现:其用法如下:
我发布了一个更奇特的描述符方法here,带有自动
name
设置。。。你知道吗相关问题 更多 >
编程相关推荐