马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码:class A:
def say(self):
print('FishA')
class B(A):
def say(self):
super().say()
print('FishB')
class C(A):
def say(self):
super().say()
print('FishC')
class D(B,C):
def say(self):
super().say()
c=C()
c.say()
指着第九行括号后面报错(语法错误)
给第九行加上#,还报错
错误窗口: Tab/space error
Error: Inconsistent indentation detected!
1) Your indentation is outright incorrect (easy to fix), OR
2) Your indentation mixes tabs and spaces.
To fix case 2, change all tabs to spaces by using Edit-> Select AlI
followed by Format- > Untabify Region and specify the number of
columns used by each tab.
确定
这段代码定义了四个类:A, B, C, D,它们之间有继承关系。类A是基类,类B和类C都继承了类A,类D继承了类B和类C。每个类都有一个say方法,它会打印出类的名字,并调用父类的say方法(如果有的话)。最后,代码创建了一个C类的实例c,并调用了它的say方法。
这段代码的输出是:
FishA FishC
这是因为,当c.say()被调用时,它会先打印出’FishC’,然后调用super().say(),这会调用它在继承顺序中的下一个类的say方法,也就是类A的say方法。类A的say方法会打印出’FishA’,然后结束,因为它没有父类。所以,最终的输出是两行:‘FishA’和’FishC’。
而5楼liu的代码是无论如何都会先输出FishB以及FishC,这么说你明白吗?
|