relation()方法和默认学号的问题
老师,您好。我的练习代码如下:
class Person(object):
# 重写实例对象的构造(初始化)方法
def __init__(self, name, gender):
self.name = name
self.gender = gender
# 自定义实例方法,格式化打印实例属性name的值
def speak(self):
print('hello!我是{name}'.format(name = self.name))
# 自定义实例方法,占位作用
def relation(self):
pass
class Student(Person):
# 重写实例对象的构造(初始化)方法,并调用父类构造方法,实现对实例属性的赋值
def __init__(self, name, gender, score, major, stu_num = '2018014002'):
super(Student, self).__init__(name, gender)
self.score = score
self.major = major
self.__stu_num = stu_num
# 自定义实例方法,格式化打印实例属性stu_num的值
def speak(self):
super(Student, self).speak()
print('我的学号为{stu_num},很高兴认识大家'.format(stu_num = self.__stu_num))
# 自定义实例方法,判断学号是否为既定值,并根据判断结构 进行分类打印
def identify_stu(self):
if self.__stu_num == '2018014002':
print('我的分组已完成')
else:
print('请稍后,马上为你自动分组')
# 自定义实例方法,设置实例对象的学号为传入的值
def set_num(self, new_num):
self.__stu_num = new_num
# 自定义实例方法,判断该类是否为Person类的子类,并进行分类打印
def relation(self):
if issubclass(Student, Person):
print('我的父类是Person')
else:
print('父类正在查询中......')
if __name__ == '__main__':
stu = Student('小明', '男', 90, '数学')
# 调用speak方法 打印stu对应的值
stu.speak()
# 调用实例方法 鉴别学号是否为指定值
stu.identify_stu()
# 调用实例方法 鉴别实例对象所属的类的父类是否为Person
stu.relation()
print("******************")
stu_2 = Student('小红', '女', 89, '英语')
# 调用实例方法 设置stu_2的学号为'2018040625'
stu_2.set_num('2018040625')
# 调用实例方法 打印stu_2对应的值
stu_2.speak()
# 调用实例方法 鉴别学号是否为指定值
stu_2.identify_stu()
就是想问一下子类Student中这个relation()方法有更好的实现方案么?我感觉自己写得比较生硬,就是太直白的感觉了。还有个问题,就是关于默认学号'2018014002'的问题,这边其实有两处用到了这边这个值,一处用来默认初始化学生的学号,另一处则是在identify_stu()中,用来进行比较了,感觉可以单独抽离出来成为一个常量处理,但不是很清楚怎么实现比较好。
正在回答
同学,你好,
1、使用relation( )函数判断一个类是否是另一个类的子类是没有问题的,题目要求判断Student是否为Person的子类,同学的代码符合题目要求。同学觉得生硬,是觉得relation( )方法中只能判断2个固定的类,写法不够灵活吗,同学也可以对本题进行拓展,定义两个参数,调用时传入类的名称,灵活判断,参考如下代码
2、默认学号可以单独抽离出来,调用的时候引用该变量的名即可
同学思维敏捷、严谨,能活学活用,非常棒,祝学习愉快~~~
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星