老师,麻烦帮忙看一下我的代码如下,打印与结果不一样,谢谢
来源:2-3 编程练习
慕婉清5162727
2019-07-09 22:03:05
class Person(object):
# 重写实例对象的构造(初始化)方法
def __init__(self,name,gender):
self.name=name
self.gender=gender
# 自定义实例方法,格式化打印实例属性name的值
def speak(self):
print('hello!我是{}'.format(self.name))
# 自定义实例方法,占位作用
def relation(self):
pass
class Student(Person):
# 重写实例对象的构造(初始化)方法,并调用父类构造方法,实现对实例属性的赋值
def __init__(self,name,gender,score,major):
super(Student,self).__init__(name,gender)
self.score = score
self.major = major
# 自定义实例方法,格式化打印实例属性stu_num的值
def speak(self,stu_num):
print('我的学号为{0},很高兴认识大家'.format(stu_num))
# 自定义实例方法,判断学号是否为既定值,并根据判断结构 进行分类打印
def identify_stu(self,stu_num):
if stu_num=='2018014002':
print('我的分组已经完成')
else:
print('请稍后,马上为你自动分组')
# 自定义实例方法,设置实例对象的学号为传入的值
def set_nun(self,new_num):
stu_nun = new_num
return stu_num
# 自定义实例方法,判断该类是否为Person类的子类,并进行分类打印
def relation(self):
t=issubclass(Student,Person)
if t==True:
print('我的父类是Person')
else:
print('父类正在查询中······')
if __name__ == '__main__':
stu = Student('小明', '男', 90, '数学')
# 调用speak方法 打印stu对应的值
stu_num='2018014002'
stu.speak(stu_num)
# 调用实例方法 鉴别学号是否为指定值
stu.identify_stu(stu_num)
# 调用实例方法 鉴别实例对象所属的类的父类是否为Person
stu.relation()
print("******************")
stu_2 = Student('小红', '女', 89, '英语')
# 调用实例方法 设置stu_2的学号为'2018040625'
stu_2.set_nun('2018040625')
# 调用实例方法 打印stu_2对应的值
stu_2.speak(stu_num)
# 调用实例方法 鉴别学号是否为指定值
stu_2.identify_stu(stu_num)
1回答
同学,你好。
1、Stuent类中的speak需要调用父类中的speak才可以打印出父类中的内容。另因父类speak没有参数,因此在调用speak()方法时也不需要传参,可以设置参数stu_num的默认值。
2、同学在调用identify_stu方法时,传入的为stu_num值,在前面语句中该变量值为'2018014002',因此stu_2的学号也为'2018014002'。可以直接传入'2018040625'。将参数new_num的值赋值给self.stu_num,修改该变量的值。
、
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
相似问题
回答 1