老师,麻烦您看看代码写的是否有问题,还有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 可用。同学写的这几种继承父类的方法都是可以的。
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
相似问题