老师,麻烦您看看代码写的是否有问题,还有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 可用。同学写的这几种继承父类的方法都是可以的。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

1

0 学习 · 8160 问题

查看课程