課程
/后端開發(fā)
/Python
/Python3 進階教程(新版)
想不明白,想不出來
2024-03-09
源自:Python3 進階教程(新版) 3-4
正在回答
在繼承了兩個方法的情況下,super()只會調用第一個函數(shù)的__init__ 方法,而不會調用第二個函數(shù),所以會出現(xiàn)傳參多的問題。修改一下代碼,例如:
# Enter a code
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):
? ? ? ? super(Teacher, self).__init__(name, gender)
class SkillMixin(object):
? ? def __init__(self, sports):
? ? ? ? self.sports = sports
? ? ? ??
class BasketbaMixin(SkillMixin):
? ? ? ? super(BasketbaMixin, self).__init__(sports)
class FootballMixin(SkillMixin):
? ? ? ? super(FootballMixin, self).__init__(sports)
class PlayBasketballStudent(BasketbaMixin, Student):
? ? def __init__(self, name, gender, score, sports):
? ? ? ? Student.__init__(self, name, gender, score)
? ? ? ? BasketbaMixin.__init__(self, sports)
? ? def get_info(self):? ??
? ? ? ? return 'I am a Student, my name is %s, I am a %s, I like %s, my score is %s' % (self.name, self.gender, self.sports, self.score)
class PlayFootballTeacher(Teacher, FootballMixin):
? ? ? ? Teacher.__init__(self, name, gender, score)
? ? ? ? FootballMixin.__init__(self, sports)
? ? ? ? return 'I am a Teacher, my name is %s, my score is %s, I like %s' % (self.name, self.score, self.sports)
student = PlayBasketballStudent("Alice", "female", "90", "basketball")
teacher = PlayFootballTeacher("Bob", "male", "30", "football")
print(teacher.get_info())
print(student.get_info())
舉報
學習函數(shù)式、模塊和面向對象編程,掌握Python高級程序設計
1 回答大神看看這是什么問題?
1 回答請問一下大家這是什么問題
2 回答這一段,我看不懂,有大神可以幫忙解釋下嗎?
2 回答報錯了,請大神們幫我看看哪里錯了唄!
2 回答看不懂,參考答案為什么要這樣編輯?有沒有大神指導一下?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2024-03-29
在繼承了兩個方法的情況下,super()只會調用第一個函數(shù)的__init__ 方法,而不會調用第二個函數(shù),所以會出現(xiàn)傳參多的問題。修改一下代碼,例如:
# Enter a code
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, score):
? ? ? ? super(Teacher, self).__init__(name, gender)
? ? ? ? self.score = score
class SkillMixin(object):
? ? def __init__(self, sports):
? ? ? ? self.sports = sports
? ? ? ??
class BasketbaMixin(SkillMixin):
? ? def __init__(self, sports):
? ? ? ? super(BasketbaMixin, self).__init__(sports)
class FootballMixin(SkillMixin):
? ? def __init__(self, sports):
? ? ? ? super(FootballMixin, self).__init__(sports)
class PlayBasketballStudent(BasketbaMixin, Student):
? ? def __init__(self, name, gender, score, sports):
? ? ? ? Student.__init__(self, name, gender, score)
? ? ? ? BasketbaMixin.__init__(self, sports)
? ? ? ??
? ? def get_info(self):? ??
? ? ? ? return 'I am a Student, my name is %s, I am a %s, I like %s, my score is %s' % (self.name, self.gender, self.sports, self.score)
class PlayFootballTeacher(Teacher, FootballMixin):
? ? def __init__(self, name, gender, score, sports):
? ? ? ? Teacher.__init__(self, name, gender, score)
? ? ? ? FootballMixin.__init__(self, sports)
? ? ? ??
? ? def get_info(self):? ??
? ? ? ? return 'I am a Teacher, my name is %s, my score is %s, I like %s' % (self.name, self.score, self.sports)
student = PlayBasketballStudent("Alice", "female", "90", "basketball")
teacher = PlayFootballTeacher("Bob", "male", "30", "football")
print(teacher.get_info())
print(student.get_info())