老师,麻烦您看看代码写的是否有问题,还有pass是不是必须写呢
来源:2-3 编程练习
啊可
2019-05-21 15:50:44
class Person(object):
# 重写实例对象的构造(初始化)方法
def __init__(self, name, gender):
self.name = name
self.gender = gender
# 自定义实例方法,格式化打印实例属性name的值
def speak(self):
print(f'hello ! 我是{self.name}')
pass
# 自定义实例方法,占位作用
def relation(self):
pass
class Student(Person):
# 重写实例对象的构造(初始化)方法,并调用父类构造方法,实现对实例属性的赋值
def __init__(self,name,gender,score,major,id = 2018014002):
# super(Student,self).__init__(name,gender)
# Person.__init__(self,name,gender)
super().__init__(name,gender)
self.score = score
self.major = major
self.__num = id
# 自定义实例方法,格式化打印实例属性stu_num的值
def speak(self):
super().speak()
print(f'我的学号为{self.__num},很高兴认识大家')
pass
# 自定义实例方法,判断学号是否为既定值,并根据判断结构 进行分类打印
def identify_stu(self):
if self.__num == 2018014002 :
print('我的分组已经完成')
else:
print('请稍后,马上为您分组')
pass
# 自定义实例方法,设置实例对象的学号为传入的值
def set_num(self,new_num):
self.__num = new_num
pass
# 自定义实例方法,判断该类是否为Person类的子类,并进行分类打印
def relation(self):
if issubclass(Student,Person):
print('我的父类是Person')
else:
print('父类正在查询中······')
pass
if __name__ == '__main__':
stu = Student('小明', '男', 90, '数学')
# 调用speak方法 打印stu对应的值
# super(Student,stu).speak()
stu.speak()
# 调用实例方法 鉴别学号是否为指定值
stu.identify_stu()
# 调用实例方法 鉴别实例对象所属的类的父类是否为Person
stu.relation()
print("******************")
stu_2 = Student('小红', '女', 89, '英语')
# super(Student,stu_2).speak()
# 调用实例方法 设置stu_2的学号为'2018040625'
stu_2.set_num(2018040625)
# 调用实例方法 打印stu_2对应的值
stu_2.speak()
# 调用实例方法 鉴别学号是否为指定值
stu_2.identify_stu()还有个问题:
super(Student,self).__init__(name,gender)
这里面的Student,self 应该怎么理解呢 super().__init__(name,gender) 这样写不是也行吗
1回答
时间,
2019-05-21
同学,你好,
1、代码整体是没有问题的,pass并不是所有的情况都是要写的,pass 是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。例:
def func():
pass
for letter in 'Python':
if letter == 'h':
pass
print('这是 pass 块')
print('当前字母 :', letter)2、继承父类的方法:super(子类名,self).父类方法(),Student是子类的名字,self是实例。super().父类方法()。只在 python3 可用。同学写的这几种继承父类的方法都是可以的。
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
相似问题