1 class Parent(object): 2 def altered(self): 3 print "PARENT altered()" 4 class Child(Parent): 5 def altered(self): 6 print "CHILD, BEFORE PARENT altered()" 7 super(Child, self).altered() 8 print "CHILD, AFTER PARENT altered()" 9 dad = Parent() 10 son = Child() 11 dad.altered() 12 son.altered() 重要的是 9 到 11 行,当调用 son.altered() 时: 1. 由于我覆写了 Parent.altered ,实际运行的是 Child.altered ,所以第 9 行执行结果是预料之中 的。 2. 这里我想在前面和后面加一个动作,所以,第 9 行之后,我要用 super 来获取 Parent.altered 这个版本。 3. 第 10 行我调用了 super(Child, self).altered() ,这和你过去用过的 getattr 很 相似,不过它还知道你的继承关系,并且会访问到 Parent 类。这句你可以读作“调用 super 并 且加上 Child 和 self 这两个参数,在此返回的基础上然后调用 altered ”。 4. 到这里 Parent.altered 就会被运行,而且打印出了父类里的信息。 5. 最后从 Parent.altered 返回到 Child.altered ,函数接着打印出来后面的信息。 运行的结果是这样的: PARENT altered() CHILD, BEFORE PARENT altered() PARENT altered() CHILD, AFTER PARENT altered()