|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为了方便看执行过程 我用了print
- class MyDes:
- print('MyDes被执行')
-
- def __init__(self, value = None):
- print('MyDes中__init__被执行')
- self.val = value
-
-
- def __get__(self, instance, owner):
- print('MyDes中__get__被执行')
- return self.val ** 2
-
- class Test:
- print('Test被执行')
-
- def __init__(self):
- print('Test中__init__被执行')
- self.x = MyDes(3)
-
- test = Test()
- test.x
复制代码
但是问题来了,但是顺序和我理解的不一样,为什么先MyDes?,然后为什么不是执行MyDes中__init__被执行?而是跑去Test里面了
- MyDes被执行
- Test被执行
- Test中__init__被执行
- MyDes中__init__被执行
复制代码
这两句话是在定义的时候就print了,因为先定义的MyDes,后定义的Test。你换下顺序就变了
- class MyDes:
- print('MyDes被执行')
-
- def __init__(self, value = None):
- print('MyDes中__init__被执行')
- self.val = value
-
-
- def __get__(self, instance, owner):
- print('MyDes中__get__被执行')
- return self.val ** 2
-
- class Test:
- print('Test被执行')
-
- def __init__(self):
- print('Test中__init__被执行')
- self.x = MyDes(3)
复制代码
test = Test()这句话打印的后面两句
- Test中__init__被执行
- MyDes中__init__被执行
复制代码
test.x没有打印,啥都没有
print(test.x.value)是3
|
|