当前位置: 首页 > article >正文

Python学习36天

面向对象编程综合

# 创建父类
class Employee:
    # 创建私有属性
    __name = None
    __salary = None

    # 创建构造器初始化属性
    def __init__(self, __name, __salary):
        self.__name = __name
        self.__salary = __salary
        
    def get_annual(self):
        # 返回员工年薪
        return self.__salary * 12

    # 创建公共方法供子类设置父类的私有属性
    def set_name(self, __name):
        self.__name = __name

    def set_salsry(self, __salary):
        self.__salary = __salary

    # 创建公共方法供子类获取父类私有属性
    def get_name(self):
        return self.__name

    def get_salary(self):
        return self.__salary


# 创建Work子类
class Work(Employee):

    def work(self):
        # 调用父类的公共方法获取父类的私有属性
        print(f"普通工人:{self.get_name()}负责执行项目内容————")


class Manager(Employee):
    __bonus = None

    def __init__(self, __name, __salary, __bonus):
        # 调用父类的构造器初始化父类的属性
        super().__init__(__name, __salary)
        # 初始化子类的属性
        self.__bonus = __bonus

    # 重写get_annual方法
    def get_annual(self):
        return super().get_annual() + self.__bonus

    def manage(self):
        print(f"经理:{self.get_name()}负责管理项目进度————")


# 创建输出任意对象的姓名和年薪函数
def show_emp_annual(e: Employee):
    print(f"员工姓名:{e.get_name()} 员工年薪:{e.get_annual()}")


# 创建对象并调用函数
work = Work("tom", 10000)
show_emp_annual(work)

manage = Manager("kk", 20000, 50000)
show_emp_annual(manage)


# 判断员工类别返回员工职责
def working(e):
    # isinstance()可以判断对象是否在此类中,是返回True,否返回False
    if isinstance(e, Work):
        e.work()
    elif isinstance(e, Manager):
        e.manage()
    else:
        print("无法查询到员工信息")


# 调用函数
working(work)
working(manage)


http://www.kler.cn/a/413953.html

相关文章:

  • Ubuntu问题 -- 使用scp将本机文件传输至ubuntu服务器中
  • MATLAB - ROS2 ros2genmsg 生成自定义消息(msg/srv...)
  • PL/I语言的起源?Objective C语言起源哪里?JavaScript的起源?Java的起源?B语言的起源?C++语言的起源?C#的起源?
  • 如何提升C/C++的编程能力
  • VsCode 插件推荐(个人常用)
  • 双十一线上服务调用链路追踪SkyWalking实战分析
  • Java 线程中的分时模型和抢占模型
  • uniapp数据绑定、插值、v-bind、v-for
  • Docker部署h2non/imaginary
  • 无人机应用板卡详解!
  • 1067 Sort with Swap(0, i) (25)
  • 【GAMES101笔记速查——Lecture 21 Animation】
  • 【操作文档】mysql分区操作步骤.docx
  • DICOM医学影像应用篇——伪彩色映射 在DICOM医学影像中的应用详解
  • Spring Boot拦截器(Interceptor)详解
  • 网络安全之WAF
  • 【论文阅读】Learning to Learn Task-Adaptive Hyperparameters for Few-Shot Learning
  • AIGC引领金融大模型革命:未来已来
  • Docker:在 ubuntu 系统上生成和加载 Docker 镜像
  • Linux网络——IO模型和多路转接
  • 【高等数学学习记录】洛必达法则
  • 远程调用 rpc 、 open feign
  • 微前端-MicroApp
  • Servlet的应用(用户注册界面)
  • 《气候变化研究进展》
  • Java之String类常用操作