python中关于多继承失败的问题。(//我想让others继承Student类和Teacher类)

//我想让others继承Student类和Teacher类,怎么调试都报错,应该怎样修改代码呀?classPerson(object):def__init__(self... //我想让others继承Student类和Teacher类,怎么调试都报错,应该怎样修改代码呀?

class Person(object):
def __init__(self,name,gender):
self.name=name
self.gender=gender

class Student(Person):
def __init__(self,name,gender,score):
super(Student,self).__init__(name,gender)
self.score=score

class Teacher(Person):
def __init__(self,name,gender,ID):
super(Teacher,self).__init__(name,gender)
self.ID=ID

class Others(Teacher,Student):
def __init__(self,name,gender,score,ID):
super(Student,Teacher,self).__init__(name,gender,score,ID)

S=Student('Liverpool','Male','2')
T=Teacher('Liverpool','Male','20170702030')
O=Others('Liverpool','Male','20170702030','2')

print(T.name,T.gender,T.ID)
print(S.name,S.gender,S.score)
print(O.name,O.gender,O.ID)
展开
 我来答
紫薇参星
科技发烧友

2019-04-09 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5984
采纳率:92%
帮助的人:3531万
展开全部

因为这是一个多重菱形继承的典型例子,所以用super函数很难指明继承自哪一个类的构造函数,因此用老方法指明继承自哪一个类的构造函数.

完整的程序如下(学生类和教师类的最后一个参数传错了,就是我加注释的地方)

class Person(object):
 def __init__(self,name,gender):
  self.name=name
  self.gender=gender
class Student(Person):
 def __init__(self,name,gender,score):
  Person.__init__(self,name,gender)
  self.score=score
class Teacher(Person):
 def __init__(self,name,gender,ID):
  Person.__init__(self,name,gender)
  self.ID=ID
class Others(Teacher,Student):
 def __init__(self,name,gender,score,ID):
  Student.__init__(self,name,gender,score)
  Teacher.__init__(self,name,gender,ID)
S=Student('Liverpool','Male','20170702030') #这里传学生类分数属性参数
T=Teacher('Liverpool','Male','2') #这里传教师类ID属性参数
O=Others('Liverpool','Male','20170702030','2')
print(T.name,T.gender,T.ID)
print(S.name,S.gender,S.score)
print(O.name,O.gender,O.ID)

源代码(注意源代码的缩进)

追问
非常感谢🙏!!!
追答
不用谢!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式