|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
零基础46讲课后习题:
求代码会打印什么内容:
- 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)
复制代码
老师的答案是:20 0
我看下来觉得是:-10
但是从程序跑下来是:10
求解:为什么。。。。
我copy楼主贴出来的代码,跑的结果是20 0
line 10: 宣告C类里有MyDes类的成员x。
line 12: x=新产生的MyDes类,跑__init__,此时MyDes.val=None。
line 13: c.x=10 => 跑__set__,10+10=20,所以打印20。
line 14: print(c.x) => 跑__get__,20-20=0,所以打印0。
老师的答案是正解
|
|