1 class Foo1(object):
2 def __init__(self, name):
3 self.name1 = name
4 def get_name(self):
5 print("my name is %s"%self.name1)
6
7 class Foo2(object):
8 def __init__(self, name):
9 self.name2 = name
10
11 class Foo3(object):
12 def __init__(self, name):
13 self.name3 = name
14 obj1 = Foo1('zsq')
15 obj2 = Foo2(obj1)
16 obj3 = Foo3(obj2)
17 #使用obj3输出zsq;self.name3 == obj2 && obj2.name2 == obj1 --> self.name3.name2 == obj1 && obj1.name1 == zsq --> self.name3.name2.name1 == 'zsq'
18 obj3.name3.name2.get_name()
1 class Foo4(object):
2 def __init__(self):
3 print('Foo4')
4 def a1(self):
5 print("Foo4a1")
6 def a2(self):
7 print("Foo4a2")
8 class Foo5(Foo4):
9 def __init__(self):
10 print('Foo5')
11 def a1(self):
12 self.a2()
13 print("Foo5a1")
14 def a2(self):
15 print("Foo5a2")
16 class Foo6(Foo5):
17 def __init__(self):
18 print('Foo6')
19 def a2(self):
20 print("Foo6a2")
21 obj6 = Foo6() #Foo构造函数输出 Foo6
22 obj6.a1()
23 #Foo6a2 Foo5a1;Foo6.a1继承自Foo5,Foo5.a1第一步调用self.a2;此时self为obj6是Foo6的对象,首先在Foo6中查找a2方法,输出Foo6a2
24 #继续向西执行Foo5.a1下一行的print语句输出Foo5a1