|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
>>> class My:
def __init__(self,value = None):
self.val = value
def __get__(self,instance,owner):
return self.val ** 2
>>> class Test:
def __init__(self):
self.x = My(3)
>>> test = Test()
>>> test.x
<__main__.My object at 0x037F1358>
这是小甲鱼第46课课后题第4题,想问一下下面这句话是什么意思?(抄子小甲鱼答案原文)
访问实例层次上的描述符x,只会返回描述符本身。为了描述符能够正常工作,它们必须定义在类的层次上。如果你不这么做,那么python无法自动为你调用__get__和__set__方法
- class Test:
- def __init__(self):
- self.x = My(3)
- test = Test()
- test.x
复制代码
x定义在构造类Test的函数中,为self的属性
self表示创建的类实例对象本身
test为Test类的实例对象,所以x被定义属于类Test的实例对象test
所以此时为访问实例层次上的描述符x
- class C:
- def __init__(self):
- self.__x = None
- def getX(self):
- return self.__x
- def setX(self,value):
- self.__x = value
- def delX(self):
- del self.__x
- x = MyProperty(getX,setX,delX)
复制代码
此时的x在类C的类定义中,也就是定义在类的层次
|
|