当前位置:首页>python>Python入门教程:类和对象的综合示例用法

Python入门教程:类和对象的综合示例用法

  • 2026-10-11 07:32:54
Python入门教程:类和对象的综合示例用法

Python,速成心法

敲代码,查资料,问Ai

练习,探索,总结,优化

★★★★★博文创作不易,源码代码的过程中,如有疑问的地方,欢迎大家指正留言交流。喜欢的老铁可以多多点赞+收藏分享+置顶,小红牛在此表示感谢。★★★★★

Python打包教程07:还不会用--add-data参数,添加资源文件吗?

Python打包教程04:UPX安装与使用(减小.exe体积)

Python打包教程03:PyInstaller命令使用指南

Python查询CPU+硬盘+网卡MAC +主板+BIOS序列号

Python模块教程:os和pathlib找路径对比

Python教程:PyCharm安装过程中遇到的中英文对照表

和Python编程相关的,中英文对照词汇表

2025年Python和pycharm安装下载教程

Python教程110:单线程和多线程源码演示(threading)

Python教程108:针对面向对象Class类知识要点,源码示例再演示。

Python入门教程04:流程控制语句(if+for+continue等)

Python入门教程10:datetime模块的示例用法

Python入门教程02:常用的内置函数示例演示

200条Python零基础自学指南

Python零基础教程:小白入门自学知识点大纲

Python教程:Py模块导入方法详解

Python教程:3种格式符(str.format()+f-string+%)的常见用法

下面是一个综合的 Python 类示例,涵盖了类定义、构造方法、实例方法、类方法、静态方法、属性(property)、继承、多态、特殊方法(__str__, __repr__, __eq__)等核心概念。示例以“员工管理系统”为场景,便于理解。
输出内容:
姓名:张三,工资:5000,ID:1姓名:王经理,工资:10000,ID:3,奖金:3000公司:ABC科技,员工总数:3False50005500警告:不能删除工资,已忽略操作Employee(张三)Employee('张三', 5500)True姓名:张三,工资:5500,ID:1姓名:李四,工资:6000,ID:2姓名:王经理,工资:10000,ID:3,奖金:3000李四 涨薪 500 元,现工资 65001

↓ 完整源码如下 ↓

# -*- coding: utf-8 -*-# @Author : 小红牛# 微信公众号:wdPythonclass Employee:    """员工基类"""    # 类变量:所有实例共享    company = "ABC科技"    employee_count = 0    def __init__(self, name, salary):        """构造方法:初始化实例属性"""        self.name = name          # 公有属性        self._salary = salary     # 受保护属性(约定)        self.__id = Employee.employee_count + 1  # 私有属性(名称修饰)        Employee.employee_count += 1    # 实例方法:操作实例属性    def get_info(self):        return f"姓名:{self.name},工资:{self._salary},ID:{self.__id}"    # 类方法:操作类变量,使用 @classmethod    @classmethod    def get_company_info(cls):        return f"公司:{cls.company},员工总数:{cls.employee_count}"    # 静态方法:与类相关但无需访问实例/类属性,使用 @staticmethod    @staticmethod    def is_workday(day):        """判断某天是否为工作日(简单示例)"""        return day.weekday() < 5   # 周一=0,周日=6    # 属性(property):将方法当作属性访问,可控制读写    @property    def salary(self):        """工资的 getter"""        return self._salary    @salary.setter    def salary(self, value):        """工资的 setter:增加校验逻辑"""        if value < 0:            raise ValueError("工资不能为负数")        self._salary = value    @salary.deleter    def salary(self):        """允许删除 salary(实际不会删除真实数据)"""        print("警告:不能删除工资,已忽略操作")    # 特殊方法:自定义对象的表现形式    def __str__(self):        """面向用户的字符串表示(print() 调用)"""        return f"Employee({self.name})"    def __repr__(self):        """面向开发者的字符串表示(交互式环境直接显示)"""        return f"Employee('{self.name}', {self._salary})"    def __eq__(self, other):        """定义 == 的行为:根据姓名和工资判断相等性"""        if not isinstance(other, Employee):            return NotImplemented        return self.name == other.name and self._salary == other._salary# --------------------------------------------# 2. 子类:Manager(继承 Employee)# --------------------------------------------class Manager(Employee):    """经理类,继承自 Employee"""    def __init__(self, name, salary, bonus):        # 调用父类构造方法        super().__init__(name, salary)        self.bonus = bonus    # 重写父类方法(多态)    def get_info(self):        # 复用父类逻辑并扩展        base_info = super().get_info()        return f"{base_info},奖金:{self.bonus}"    # 添加新的实例方法    def give_raise(self, employee, amount):        """给指定员工涨工资(示例方法)"""        if isinstance(employee, Employee):            employee.salary += amount            print(f"{employee.name} 涨薪 {amount} 元,现工资 {employee.salary}")        else:            raise TypeError("只能给 Employee 实例涨薪")# --------------------------------------------# 3. 演示类与对象的使用# --------------------------------------------if __name__ == "__main__":    # ---------- 创建实例 ----------    emp1 = Employee("张三", 5000)    emp2 = Employee("李四", 6000)    mgr = Manager("王经理", 10000, 3000)    # ---------- 实例方法 ----------    print(emp1.get_info())   # 姓名:张三,工资:5000,ID:1    print(mgr.get_info())    # 姓名:王经理,工资:10000,ID:3,奖金:3000    # ---------- 类方法和静态方法 ----------    print(Employee.get_company_info())    # 公司:ABC科技,员工总数:3    import datetime    print(Employee.is_workday(datetime.date(2026, 5, 31)))  # 假设周日,输出 False    # ---------- 属性 property ----------    print(emp1.salary)        # 5000    emp1.salary = 5500    print(emp1.salary)        # 5500    # emp1.salary = -100       # 触发 ValueError: 工资不能为负数    del emp1.salary           # 警告:不能删除工资,已忽略操作    # ---------- 特殊方法 ----------    print(str(emp1))          # Employee(张三)    print(repr(emp1))         # Employee('张三', 5500)    emp3 = Employee("张三", 5500)    print(emp1 == emp3)       # True(因为姓名和工资相同)    # ---------- 多态 ----------    employees = [emp1, emp2, mgr]    for e in employees:        # 无论是 Employee 还是 Manager,都能调用 get_info()        print(e.get_info())    # ---------- 子类特有方法 ----------    mgr.give_raise(emp2, 500) # 李四 涨薪 500 元,现工资 6500    # ---------- 访问私有属性(不推荐,但可以绕过)----------    # print(emp1.__id)         # 报错 AttributeError    print(emp1._Employee__id)  # 1(名称修饰后仍可访问,仅用于特殊场景)

完毕!!感谢您的收看

------★★历史博文集合★★------

Python入门篇  进阶篇  视频教程  Py安装

py项目Python模块 Python爬虫  Json

Xpath正则表达式SeleniumEtreeCss

Gui程序开发TkinterPyqt5 列表元组字典

数据可视化   matplotlib   词云图Pyecharts

海龟画图PandasBug处理电脑小知识

自动化脚本编程工具NumPy CSVWeb

Pygame  图像处理  机器学习数据库

最新文章

随机文章