| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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  
 
 
 |   
 
 
 
 |