这一题答案为啥不是9答案解析没看懂
>>> class MyDes:def __init__(self, value = None):
self.val = value
def __get__(self, instance, owner):
return self.val ** 2
>>> class Test:
def __init__(self):
self.x = MyDes(3)
>>> test = Test()
>>> test.x
如你所见,访问实例层次上的描述符 x,只会返回描述符本身。为了让描述符能够正常工作,它们必须定义在类的层次上。如果你不这么做,那么 Python 无法自动为你调用 __get__ 和 __set__ 方法。
能解释一下这是什么意思吗?答案为什么不是9
如你所见,访问实例层次上的描述符 x,只会返回描述符本身。为了让描述符能够正常工作,它们必须定义在类的层次上。
关键字是这些,这个是个知识点,你记住就好,不必深究,代码中的 Test 类:
class Test:
def __init__(self):
self.x = MyDes(3)
访问描述符时候是属于实例属性的 x ,而访问实例属性的 x 只会返回描述符本身(类中在方法内的带 self. 的属性就是实例属性,属于实例层次)
而我们要怎么办定义成类层次呢?这样即可:
class Test:
x = MyDes(3)
在方法外直接访问描述符,将结果返回给类属性 ,这样就是定义在 类的层次上,返回的结果就为 9(类中方法外的属性叫 类属性,属于类层次)
它们必须定义在类的层次上....
你都写明白了,还问为啥,这句话可不是闹着玩呢.. 类好难
页:
[1]