python - (Python 派生类)没有得到正确的输出
问题描述
这是我想要的输出:
Name: Smith, Age: 20, ID: 9999
到目前为止,这是我的代码
class PersonData:
def __init__(self):
self.last_name = ''
self.age_years = 0
def set_name(self, user_name):
self.last_name = user_name
def set_age(self, num_years):
self.age_years = num_years
# Other parts omitted
def print_all(self):
output_str = 'Name: ' + self.last_name + ', Age: ' + str(self.age_years)
return output_str
class StudentData(PersonData):
def __init__(self):
PersonData.__init__(self) # Call base class constructor
self.id_num = 0
def set_id(self, student_id):
self.id_num = student_id
def get_id(self):
return self.id_num
course_student = StudentData()
course_student = StudentData()
course_student.get_id(9999)
course_student.set_age(20)
course_student.set_name("Smith")
print('%s, ID: %s' % (course_student.print_all(), course_student.get_id()))
目前,它没有运行。如果有人可以提供帮助,我将不胜感激。它返回第 34 行的类型错误,我不知道如何纠正它。任何帮助将不胜感激。
解决方案
您在那里错误地调用了父级初始化...
这是你应该如何做的:
class PersonData:
def __init__(self):
self.last_name = ''
self.age_years = 0
def set_name(self, user_name):
self.last_name = user_name
def set_age(self, num_years):
self.age_years = num_years
# Other parts omitted
def print_all(self):
output_str = 'Name: ' + self.last_name + ', Age: ' + str(self.age_years)
return output_str
class StudentData(PersonData):
def __init__(self):
super().__init__() # Call base class constructor
self.id_num = 0
def set_id(self, student_id):
self.id_num = student_id
def get_id(self):
return self.id_num
course_student = StudentData()
course_student = StudentData()
course_student.set_id(9999)
course_student.set_age(20)
course_student.set_name("Smith")
print('%s, ID: %s' % (course_student.print_all(), course_student.get_id()))
我还注意到在执行过程中,你在打电话,course_student.get_id(9999)
但我认为你的意思是course_student.set_id(9999)
推荐阅读
- azure-devops - 使用 SonarCloud 和 Azure DevOps 分析 Javascript/Typescript 项目
- php - 如何创建soap请求并将XML发送到WSDL,然后以XML接收响应?
- python - 列的字符的字符串增量
- java - 如何使用 FFMPEG 将视频文件转换为音频文件?
- scala - 如何修复外部 spark shuffle 服务上的“Error opening block StreamChunkId”
- directx - 执行错误 #362:DEVICE_DRAW_POSITION_NOT_PRESENT
- azure - 安装在新控制器上的 Azure ADConnect 可以删除之前同步的帐户吗?
- .htaccess - 使用 .htacess 重命名目录名称
- python - 将文本变成字典
- python - 如何使用循环删除多个数组中的相同列?