python-class的学习

题目使用某客的题库中题NP-98。

背景描述

请为牛客网的员工创建一个Employee类,包括属性有姓名(name)、(salary),并设置初始化。同时该类包括一个方法printclass,用于输出类似'NiuNiu‘s salary is 4000, and his age is 22'的语句。

请根据输入的name与salary为该类创建实例e,并调用printclass方法输出信息,如果没有年龄信息则输出错误信息"Error! No age"。

根据输入的年龄为实例e直接添加属性age等于输入值,再次调用printclass方法输出信息。(printclass方法中建议使用try...except...结构)

输入描述:

三行分别输入姓名name、工资salary、年龄age,其中第一个为字符串,后两个为整型数字。

#创建Employee类,在__init__中加入实参name和salary,注意左右各两条下划线
class Employee():
    def __init__(self,name,salary):
        self.name=name
        self.salary=salary
    def printclass(self):
#在printclass方法中加入异常处理
        try:
            print("{}'salary is {}, and his age is {}".format(self.name,self.salary,self.age))
        except:
            print("Error! No age")
#输入name,salary实参
name=input()
salary=input()
#调用Employee类并使用printclass方法
c=Employee(name,salary)
c.printclass()
#输入age
c.age=input()
#再次使用printclass方法
c.printclass()

结果如下:

如果对题目稍作修改,不抛异常,但是对是否输入age的值做判断:

描述

请为牛客网的员工创建一个Employee类,包括属性有姓名(name)、(salary),并设置初始化。同时该类包括一个方法printclass,用于输出类似'NiuNiu‘s salary is 4000, and his age is 22'的语句。

请根据输入的信息为Employee类创建一个实例e,调用hasattr方法检验实例有没有属性age,如果存在属性age直接调用printclass输出,否则使用setattr函数为其添加属性age,并设置值为输入后,再调用printclass输出。

输入描述:

三行分别依次输入姓名name、工资salary、年龄age,其中第一行为字符串,后两行为整型数字。

输出描述:

第一行输出e有没有属性age,True或者False;

第二行输出printclass打印信息。

#创建类Employee,在__init__方法中定义实参name和salary
class Employee():
    def __init__(self,name,salary):
        self.name = name
        self.salary = salary
#定义方法printclass
    def printclass(self):
        print("{}'salary is {}, and his age is {}".format(self.name,self.salary,self.age))
#输入name和salary的值
name = input()
salary = input()
#调用类Employee
e = Employee(name,salary)
#使用hasattr对赋值Employee的对象e进行判断,age实参是否有值
if hasattr(e,'age'):
    e.printclass()
#如果对象e没有age的值,则输出False,并输入age,再使用printclass方法
if hasattr(e,'age') is False:
    print('False')
    e.age = input()
    e.printclass()

结果如下:

总结:在类的方法中使用try-except可以处理没有输入实参时出现异常报错;另一种处理思路是先判断这个实参有没有输入值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值