
?♂️ 个人主页: @北极的三哈 个人主页
?? 作者简介:Python领域新星创作者。
? 系列专栏:《牛客刷题-Python篇》《牛客刷题-SQL篇》
?推荐《牛客网》——找工作神器|笔试题库|面试经验|实习经验内推,求职就业一站解决
? 点击链接进行注册学习
Python入门:011 面向对象 NP94-NP100

面向对象(二)NP98-NP100
NP98 修改属性1
描述
请为牛客网的员工创建一个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,其中第一个为字符串,后两个为整型数字。
输出描述:
根据描述输出错误信息或是打印信息。
示例1
输入:NiuNiu
8000
22
输出:Error! No age
NiuNiu'salary is 8000, and his age is 22
代码:
class employee: def __init__(self,name,salary,age=-1): self.name=name self.salary=salary self.age=age def printclass(self): if self.age==-1: print("Error! No age") else: print("{}'salary is {}, and his age is {}".format(self.name,self.salary,self.age))a=input()b=int(input())c=int(input())e=employee(a,b)e.printclass()e.age=c e.printclass() 自测运行:
保存提交:
NP99 修改属性2
描述
请为牛客网的员工创建一个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
代码:
class Employee(): def __init__(self, name, salary) -> None: self.name = name self.salary = salary def printclass(self): print(f"{self.name}'salary is {self.salary}, and his age is {self.age}") name = input()salary = int(input())age = int(input()) e = Employee(name, salary)if hasattr(e,'age'): e.printclass()else: print(False) setattr(e,"age",age) e.printclass() 自测运行:
保存提交:
NP100 重载运算
描述
请创建一个Coordinate类表示坐标系,属性有x和y表示横纵坐标,并为其创建初始化方法__init__。
请重载方法__str__为输出坐标'(x, y)'。
请重载方法__add__,更改Coordinate类的相加运算为横坐标与横坐标相加,纵坐标与纵坐标相加,返回结果也是Coordinate类。
现在输入两组横纵坐标x和y,请将其初始化为两个Coordinate类的实例c1和c2,并将坐标相加后输出结果。
输入描述:
第一行输入两个整数x1与y1,以空格间隔。
第二行输入两个整数x2与y2,以空格间隔。
输出描述:
输出相加后的坐标。
示例1
输入:1 2
3 4
输出:(4, 6)
代码:
class Coordinate(): def __init__(self, x, y): self.x = x self.y = y def __str__(self): print((self.x, self.y)) def __add__(self): self.x = x1 + x2 self.y = y1 + y2 x1, y1 = map(int, input().split()) # 1.输入第一行两个数字x2, y2 = map(int, input().split()) # 1.输入第二行两个数字 c1 = Coordinate(x1, y1) # 2. 调用类c1.__add__() # 3. 调用__add__()函数,实现两组数据分别对应相加c1.__str__() # 4. 调用__str__()函数,打印(相加之后的x, 相加之后的y) 自测运行:
保存提交:
推 荐:牛客题霸-经典高频面试题库
? 找工作神器-|笔试题库|面试经验|大厂面试题 ? 点击链接进行注册学习