我正在嘗試撰寫一個程式,它將: 創建一個類 LanguageStudent :
- 屬性語言 - 以串列形式回傳學生知道的所有語言。
- 方法 add_language(language) - 將新語言添加到語言串列中。
創建一個繼承 LanguageStudent 并具有一個附加公共方法的類 LanguageTeacher:
- 教(學生,語言) - 如果 LanguageTeacher 知道所需的語言,它教 LanguageStudent 并回傳 true;否則回傳false。
例如,以下代碼顯示 LanguageTeacher 如何教 LanguageStudent 新語言('English'):
我不完全確定我做錯了什么。我想我知道如何糾正它,但不完全。另外,這是做我應該做的最好的代碼嗎?我不斷收到此錯誤。
Traceback (most recent call last):
File "C:\Users\....\PycharmProjects\test\main.py", line 30, in <module>
teacher = LanguageTeacher()
File "C:\Users\.....\PycharmProjects\test\main.py", line 17, in __init__
super().__init__()
TypeError: LanguageStudent.__init__() missing 1 required positional argument: 'languages'
class LanguageStudent:
def __init__(self, languages):
self.languages = languages
def add_language(language):
for language in languages:
if language in languages:
return
else:
languages.append(language)
class LanguageTeacher(LanguageStudent):
def __init__(self):
super().__init__()
def teach(student, language):
if language not in student.languages:
languages.append(language)
return True
else:
return False
teacher = LanguageTeacher()
teacher.add_language('English')
student = LanguageStudent()
teacher.teach(student, 'English')
print(student.languages)
uj5u.com熱心網友回復:
型別錯誤:語言學生。init () 缺少 1 個必需的位置引數:“語言”
這告訴您您沒有向函式傳遞足夠的引數。錯誤訊息中的前幾行告訴您問題出在這些代碼行上:
class LanguageTeacher(LanguageStudent):
def __init__(self):
super().__init__()
這里super().__init__()將呼叫LanguageStudent.__init__():
class LanguageStudent:
def __init__(self, languages):
self.languages = languages
此方法需要一個languages引數,但您沒有為它提供來自LanguageTeacher.__init__(). 一種解決方法是僅添加引數,然后將其傳遞給超類:
class LanguageTeacher(LanguageStudent):
def __init__(self, languages):
super().__init__(languages)
ps 你的代碼還有其他問題,這里就不一一說明了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/516746.html
標籤:Python列表班级
下一篇:使用awk搜索包含方括號的模式
