17623095765 发表于 2020-12-25 18:47:18

第46讲 测试题 第4题

为了方便看执行过程我用了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__被执行

逃兵 发表于 2020-12-25 19:29:01

MyDes被执行
Test被执行

这两句话是在定义的时候就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
页: [1]
查看完整版本: 第46讲 测试题 第4题