
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) 展开
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) 展开
展开全部
因为这是一个多重菱形继承的典型例子,所以用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)
源代码(注意源代码的缩进)
追问
非常感谢🙏!!!
追答
不用谢!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询