首页 新闻 会员 周边 捐助

以下代码通过描述符协议实现了一个属性验证器。当 `d.value = -10` 这行代码被执行时,程序会发生什么?

0
[待解决问题]

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)
 
 
问题补充:
A
程序正常执行,`d.value` 的值将被更新为 -10。
B
程序将抛出 AttributeError,因为 `private_name` 是一个局部变量。
C
程序将抛出 ValueError,因为描述符的 `__set__` 方法中的检查逻辑被触发。
D
程序将抛出 TypeError,因为描述符不能在 `__init__` 方法中进行赋值。
*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1258
提问于:2025-12-05 16:01
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册