实验5 类和模块

实验5 类和模块

Task 5

Stuent.py 中模块实现

class StudentDoc:
    def __init__(self,num:int,
                name:str='Null',
                major:str='Unkown',
                grade:int=1) -> None:
        '''
        说明:
         * 创建一个学生,必须有学号

        参数:
         * ``num``: 学号
         * ``name``: 姓名
         * ``major``: 专业
         * ``grade``: 年级
        '''
        self.num, self.name, self.major ,self.grade = num, name, major, grade
        self.mark=0
    
    def get_mark(self) -> int:
        '''
         * 说明:
         得到成绩
        '''
        return self.mark

    def set_mark(self,num:int) -> None:
        '''
         * 说明:
         修改某人成绩

         * 参数:
         ``num``: 修改的成绩,需要是int
        '''
        self.mark=num
    
    def get_info(self) -> str:
        '''
         * 说明:
         得到信息
        '''
        return 'Name: '+self.name+'Num: '+str(self.num)+'Major: '+self.major+'Grade: '+str(self.grade)

def main():
    s1=StudentDoc(1,'lalala','gulugulu',99)
    s2=StudentDoc(2,'hahaha','rua',11)
    print(s1.get_mark())

if __name__=='__main__':
    main()

后面写了一些测试

这个实现起来非常简单,或多或少让我找回了用C#/Java的感觉。但是类的实例化语法,C#这种非常明显,而py过于简洁

我在C#可以给各个模块输入的参数写说明,py里应该也可以实现。然后顺便实现了

总体没啥好说的,因为太简单了。

运行截图

task5.py 调用模块

from student import StudentDoc as NewStudent

s1=NewStudent(num=114514,name='Dustella',grade='1',major='Front End Destroyer')
s2=NewStudent(num=19198,name='CanYing',grade=-5,major='Back End Destroyer')

s1.set_mark(100)
print(s1.get_info())
print(s1.get_mark())
s1.set_mark(90)
print(s1.get_mark())

实在是也没什么好说的。用字典传入数据是我个人习惯。

写注释的好处显而易见,IDE可以提示实例化类的时候该传入的参数说明,调用方法也有说明。

这才是正常开发该有的好习惯。

运行截图

总结时间

(原来py是面向对象的,最后一章才讲.........

posted @ 2021-05-24 23:34  Dustella  阅读(121)  评论(2)    收藏  举报