python - 作业5:定义staff类(附代码)


github指路 冲冲冲冲冲

----------------------------------原文–如下--------------------------------

这节python课,我又……睡着了

讲的内容是类与对象+异常处理

类与对象+异常处理

刘老师再次强调了pyhton是一门“一切皆对象”的语言

然后讲到类与对象的话,就提到了面向对象编程,没错就是封装继承多态嗯。

封装继承多态

继承的话,老师讲了概念树(这里没听懂,意识有点模糊,我感觉我总是在最重要的时候犯糊涂系列,或者说老师讲的稍微有点快>>>?)还有一个关键字是减少代码冗余- -

自己唠点嗑: 在python里,因为类本身是没有属性的,所以,继承也是只继承方法(也许老师说概念树指的是好多层继承形成了一个树,子类可以拓展父类的功能变成另一个类的父类???)

然后封装 ,封装就一个词,黑箱。这个黑箱是你知道这个方法能做什么就可以,不需要你知道具体怎么做(换言之,你不会实现你想要的功能你不会打代码但是你可以利用该方法实现该功能不需要你打代码只需要你调用方法)

下一个多态(我真的没听见,我感觉这时候我还在坚持不睡觉的状态,但是我没……)

接下来就讲了 类的定义

class 类名:
	def 类方法(self,c1,)

在python里面 类的定义很简单,因为类里面不能有属性,
老师怎么讲的来着,答:在python里没有声明,类定义中只有方法

okay

还有个我刚刚做作业忘记了的点,就是self自指

self自指

在类的方法里面self指的是对象自己,super[或者写的具体一点super(类名.self)]指的是对象的父类

定义对象结束—》
–》使用对象,即产生对象

通过赋值语句产生对象 举个栗子 不举栗子,等下我在作业代码里加一个注释好惹- -

还有我觉得会被忽视的一个点:类属性是对象个体的

什么意思?

回答:和前面讲的一样,只是换一种说法,就是python里没有声明,类定义里面只有方法,那么只有特定对象才会有属性

是伐?–是。

类继承

class 类名(父类名称):
	……

python里类可以继承多个父类,这种情况的时候以继承的第一个为主

嗯,然后讲钩子,形式就是方法名被两个下划线包住的方法……有点小绕,不影响

这里我睡着惹&……

有印象的就是__init__()构造函数,__ add__ ()指的是加法运算符的重载

异常

好像也睡着惹&……

反正就是try,except,那种形式
然后讲了手动触发异常

可以参考一下老师上课用的例子
手动触发异常
结束

作业

作业要求

结果截图

输出样例
贴代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/10/15 10:40
# @Author : ChenShan

class staff:
    def __init__(self,id_val,name_val,age_val,salary_val):
        self.id = id_val
        self.name = name_val
        self.age = age_val
        self.salary = salary_val
    def __str__(self):
        print("Name:"+self.name)
        print("Id:"+str(self.id))
        print("Age:"+str(self.age))
        print("Salary:"+str(self.salary))
    def Chage_val(self,age_val,salary_val):
        self.age = age_val
        self.salary = salary_val
        print("After change: " + str(self.name) + "'s age is " + str(self.age) + ",salary is " + str(self.salary))

class rangeError(Exception):
    pass

while True:
    id_val = input('Input id of this staff :');
    try:
        id_ral = int(id_val)
        break
    except ValueError:
        print(id_val,'Enter illegal characters except number!')
#……还有一些异常先不贴,我超坏系列

#产生staff对象
peo = staff(id_val,name_val,age_val,salary_val)
peo.__str__()
peo.Chage_val(35,30000)
peo.__str__()

2020/02/04更新code

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/10/15 10:40
# @Author : ChenShan
# Function : Define the staff class, create a new staff object & detect the exception of user input type

class staff:
    def __init__(self,id_val,name_val,age_val,salary_val):
        self.id = id_val
        self.name = name_val
        self.age = age_val
        self.salary = salary_val
    def __str__(self):
        print("Name:"+self.name)
        print("Id:"+str(self.id))
        print("Age:"+str(self.age))
        print("Salary:"+str(self.salary))
    def Chage_val(self,age_val,salary_val):
        self.age = age_val
        self.salary = salary_val
        print("After change: " + str(self.name) + "'s age is " + str(self.age) + ",salary is " + str(self.salary))

class rangeError(Exception):
    pass

while True:
    id_val = input('Input id of this staff :');
    try:
        id_ral = int(id_val)
        break
    except ValueError:
        print(id_val,'Enter illegal characters except number!')

name_val = input('Input name of this staff:')
while True:
    age_val = input('Input age of this staff:')
    try:
        age_ral = int(age_val)
        if age_ral < 18 or age_ral > 60:
            raise rangeError
        break
    except ValueError:
        print(age_val,'Input is not an integer!')
    except rangeError:
        print(age_ral,'Error in input range!')

while True:
    salary_val = input('Input salary of this staff:')
    try:
        salary_ral = int(salary_val)
        break
    except ValueError:
        print(salary_ral,'Input is not an integer!')

peo = staff(id_val,name_val,age_val,salary_val)
peo.__str__()
peo.Chage_val(35,30000)
peo.__str__()
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值