以下代码通过描述符协议实现了一个属性验证器。当 `d.value = -10` 这行代码被执行时,程序会发生什么?
class NonNegative:
def __set_name__(self, owner, name):
self.private_name = '_' + name
def __get__(self, instance, owner):
return getattr(instance, self.private_name)
def __set__(self, instance, value):
if value < 0:
raise ValueError("Negative value not allowed")
setattr(instance, self.private_name, value)
class Data:
value = NonNegative()
def __init__(self, value):
self.value = value
d = Data(10)
