python46讲魔法方法,描述符
题目是:请问以下代码,分别调用 test.a 和 test.x,哪个会打印“getting…”?这里面的instance是干嘛的,感觉他没有什么用,不要她可以吗
>>> class MyDes:
def __get__(self, instance, owner):
print("getting...")
>>> class Test:
a = MyDes()
x = a
>>> test = Test() class MyDes:
def __init__(self, value = None):
self.val = value
def __get__(self, instance, owner):
return self.val - 20
def __set__(self, instance, value):
self.val = value + 10
print(self.val)
class C:
x = MyDes()
if __name__ == '__main__':# 该模块被执行的话,执行下边语句。
c = C()
c.x = 10
print(c.x)
这个也有instance,好迷呀{:10_257:} python中如果一个类没有继承自object, 那么实例化出来的对象就是instance类型,否则就是class类型. xiaosi4081 发表于 2020-6-27 15:37
python中如果一个类没有继承自object, 那么实例化出来的对象就是instance类型,否则就是class类型.
不写它可以吗? 本帖最后由 Twilight6 于 2020-6-27 16:09 编辑
这里的 instance 是描述符的参数 , 是这个被访问的实例对象的呀,不能去掉 但是你可以更改
比如你这里是通过 test 实例后访问,这里的 instance 就是指 test 实例对象,而 owner 是指你的实例对象的类对象,这里就是指 Test() 类对象
不能去掉,instance 是__get__,__set__ ,__delete__ 这些方法必要的参数
Twilight6 发表于 2020-6-27 16:02
这里的 instance 是描述符的参数 , 是这个被访问的实例对象的呀,不能去掉 但是你可以更改
比如你 ...
python为什么会有类和对象这种玩儿意,折磨人啊{:10_266:} 小甲鱼的铁粉 发表于 2020-6-27 16:17
python为什么会有类和对象这种玩儿意,折磨人啊
哈哈哈哈就是面对对象的语言,精髓所在
页:
[1]