这段代码中最后一次调用父类方法没有输出东西是因为在调用c.setAttr(200)后,父类属性Parent.parentAttr已经被修改为200了,所以在调用c.parentMethod()时输出的是修改后的属性值,而不是默认值0。
至于第一个c.childMethod()方法是否会把子类的init构造方法也一起输出,答案是否定的。子类的init构造方法只在创建子类实例时被调用一次,而c.childMethod()方法是在子类实例上调用的一个普通方法,不会再次触发init构造方法。
你看错函数的输出顺序了呀,第一行的c = Child()就会调用子类的init构造函数导致有打印