请为牛客网的员工创建一个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打印信息。
示例1
输入:
NiuNiu 4000 23
输出:
False NiuNiu'salary is 4000, and his age is 23
本题涉及属性访问方法。
一般可以用‘.’来访问属性,比如emp.name时访问emp类实例的name值。
除此以外,python还提供了一些方法对类实例的属性值进行一些访问和操作。
getattr(obj, name[, default]) : 访问对象的属性值 。
hasattr(obj,name) : 检查是否存在一个属性,如果存在则返回True,反之返回False。
setattr(obj,name,value) : 设置一个属性,修改该属性值。如果属性不存在,会创建一个新属性。
delattr(obj, name) : 删除属性。
class Employee:
def __init__(self,name,salary):
self.name=name
self.salary=salary
def printclass(self):
print("{name}'salary is {salary}, and his age is {age}".format(name=self.name,salary=self.salary,age=self.age))
name=input()
salary=int(input())
emp=Employee(name,salary)
age=int(input())
print(hasattr(emp,'age'))
if hasattr(emp,'age'):
emp.printclass()
else:
setattr(emp,'age',age)
emp.printclass()