第46讲 测试题 第4题
为了方便看执行过程我用了printclass 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__被执行
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]