Python之面向对象- 类属性、类方法练习
题目要求创建一个TodoList类表示家庭任务清单包含以下内容类属性total_tasks所有待办事项的总数初始值为0、total_complete_tasks所有已完成任务总数实例属性owner拥有者、task_type类别例如“生活”“工作”tasks任务列表每个任务是一个字典{“task”: “任务名”, “completed”: False}、created_time创建时间提示datetime.datetime.now()可以获取当前时间在__init__方法中初始化实例属性任务列表为空定义实例方法add_task(self,task_name)添加新任务更新tasks列表并更新total_tasks1complete_task(self,task_name)将指定任务标记为已完成并更新total_complete_tasks1show_tasks(self,show_allTrue)显示所有任务如果show_allFalse只显示未完成的任务delete_task(self,task_name)删除指定任务更新tasks列表并更新total_tasks-1get_progress(self)计算并返回单个任务清单中完成任务的百分比定义类方法get_total_tasks(cls)获取家庭所有待办事项的总数get_total_progress(cls)获取家庭所有任务完成百分比创建2个待办事项列表不同拥有者并进行以下操作分别添加几个个任务完成部分任务显示所有任务和只显示未完成任务查看任务完成进度删除一个任务importdatetimeclassTodoList:total_tasks0total_complete_tasks0 写法一 self.tasks 没有通过形参赋值这样的话表示当前任务清单的任务必须是在任务清单创建好之后 才能一个一个通过 add_task 方法添加。 此时无法在创建 ToolList 对象时直接在外面创建好任务列表直接导入。 比如新申请一个微信号然后再一个一个加好友。 def__init__(self,owner,task_type):self.ownerowner self.task_typetask_type self.tasks[]self.created_timedatetime.datetime.now() 写法二 self.tasks 通过形参赋值表示当前任务清单的任务可以在创建 ToolList 对象时预先从外边导入一个已经有部分任务的任务清单 之后也仍然可以 add_task 方法再添加新任务。 比喻买了一个新收集可以从原来的手机上导入通讯录。之后也可以在通讯录中添加新好友的信息。 # def __init__(self,owner, task_type, tasks):# self.owner owner# self.tasks tasks# self.task_type task_type# self.created_time datetime.datetime.now() 写法三结合上边的两种 # def __init__(self,owner, task_type, tasks None):# self.owner owner# self.tasks tasks if tasks else []# self.task_type task_type# self.created_time datetime.datetime.now() 在实例方法中访问实例属性或另一个实例方法都是通过 self 访问类属性或另一个类方法 都是通过 类名. 在类方法中不能直接访问实例属性实例方法 访问类属性或另一个类方法 都是通过 cls. 在静态方法中不能直接访问实例属性实例方法 通常也不会访问类属性或类方法 但是如果要访问类属性或类方法只能通过 类名. defadd_task(self,task_name):task{task:task_name,completed:False}self.tasks.append(task)TodoList.total_tasks1defcomplete_task(self,task_name):fortaskinself.tasks:iftask[task]task_name:task[completed]TrueTodoList.total_complete_tasks1 一个方法是否该 return 值通常什么规则? (1) 你这个方法是添加、修改、删除通常不 return或者要 return 的话通常返回是否操作成功 (2)你这个方法是查询xx: 一种是直接 print这个查询的结果限定只能在控制台打印对于现阶段来说没问题 因为目前咱们这个查询的数据没有别的去向只能在控制台打印 一种是 return 查询的内容这个查询的结果可以在测试代码中加 print 打印 也可以将来将查询结果存储到数据库中或发送到页面中显示更灵活 defshow_tasks(self,show_allTrue):ifshow_all:returnself.taskselse:return[taskfortaskinself.tasksifnottask[completed]]defdelete_task(self,task_name):fortaskinself.tasks:iftask[task]task_name:self.tasks.remove(task)TodoList.total_tasks-1iftask[completed]:TodoList.total_complete_tasks-1defget_progress(self):returnf{sum(1 for task in self.tasks if task[completed]) / len(self.tasks) :.2%}classmethoddefget_total_tasks(cls):returncls.total_tasksclassmethoddefget_total_progress(cls):returnf{cls.total_complete_tasks/(cls.total_tasks):.2%}# 测试print(开始的任务清单)t1TodoList(老师,教学)t1.add_task(写教案)t1.add_task(备课)s1TodoList(学生,学习)s1.add_task(做数学练习册)s1.add_task(背单词)print(t1.show_tasks())print(s1.show_tasks())print(已完成的任务清单:)t1.complete_task(备课)print(t1.show_tasks())print(老师未完成的任务清单:)print(t1.show_tasks(False))print(老师的任务总进度:,t1.get_progress())print(班级的任务总数量:,TodoList.get_total_tasks())print(班级的任务总进度:,TodoList.get_total_progress())

相关新闻

C++实现模运算下矩阵求逆:算法原理与工程实践

C++实现模运算下矩阵求逆:算法原理与工程实践

1. 项目概述:当矩阵运算遇上模算术在密码学、编码理论乃至一些特定的图形学算法里,我们常常会遇到一个看似简单却暗藏玄机的问题:给定一个整数矩阵,如何在模运算的体系下求出它的逆矩阵?这不仅仅是“求逆”和“取模”两…

2026/7/24 6:09:01 阅读更多 →
C++26 Unicode工具库:彻底解决多语言环境下的程序崩溃问题

C++26 Unicode工具库:彻底解决多语言环境下的程序崩溃问题

1. 项目概述:多语言环境下的“幽灵”崩溃如果你是一名C开发者,尤其是从事系统软件、桌面应用或者需要处理全球用户输入的后台服务开发,那么下面这个场景你一定不陌生:软件在中文、日文或者阿拉伯文环境下运行得好好的,…

2026/7/24 6:09:01 阅读更多 →
【行业前沿】液冷时代已来:B200/Rubin Ultra 液冷 GPU 维修有哪些新挑战?

【行业前沿】液冷时代已来:B200/Rubin Ultra 液冷 GPU 维修有哪些新挑战?

1. 为什么液冷是必然?NVIDIA Rubin Ultra 平台功耗超 5kW/卡,8 卡服务器超 40kW风冷散热效率极限已至,液冷散热效率是风冷的 1000 倍PUE 可低至 1.1(超大规模数据中心标准)液冷不是"选择题",而是…

2026/7/24 6:09:01 阅读更多 →

最新新闻

AI技术助力跨境电商合规:Ozon平台实战解析

AI技术助力跨境电商合规:Ozon平台实战解析

1. 项目概述:AI护航跨境电商合规运营跨境电商卖家在俄罗斯市场拓展业务时,Ozon平台复杂的合规要求常常成为最大障碍。Captain AI正是为解决这一痛点而生的智能合规系统,它通过机器学习算法实时解析平台规则变动,为卖家提供从商品上…

2026/7/24 6:16:03 阅读更多 →
C++默认参数实战:设计灵活求最大值函数与接口优化

C++默认参数实战:设计灵活求最大值函数与接口优化

1. 项目概述:为什么需要带默认参数的求最大值函数?在C的日常开发里,我们经常会遇到一个看似简单,但实现起来却需要点心思的问题:写一个函数,既能比较两个数,又能比较三个数,返回其中…

2026/7/24 6:16:03 阅读更多 →
C++调用Python环境配置全攻略:跨平台混合编程实战

C++调用Python环境配置全攻略:跨平台混合编程实战

1. 项目概述:为什么要在C里调用Python?在项目开发中,尤其是涉及算法原型验证、快速迭代或者需要利用Python庞大生态库(如NumPy、TensorFlow、OpenCV-Python)时,我们常常会遇到一个场景:核心框架…

2026/7/24 6:15:02 阅读更多 →
智能通关系统核心技术解析与春运实战经验

智能通关系统核心技术解析与春运实战经验

1. 春运客流高峰下的快速通关需求激增每年春节前后,全国交通运输系统都会迎来年度最大规模的客流迁徙。根据近五年数据统计,春运期间全国铁路、公路、民航、水运累计发送旅客量稳定在30亿人次左右,单日客流峰值屡创新高。在这种超大规模人员流…

2026/7/24 6:15:02 阅读更多 →
BQ4050数据闪存配置实战:PF状态、CEDV算法与保护机制详解

BQ4050数据闪存配置实战:PF状态、CEDV算法与保护机制详解

1. 项目概述:为什么BQ4050的数据闪存配置是BMS开发的核心在电池管理系统(BMS)的开发与调试中,我们常常会遇到一个核心矛盾:硬件电路设计得再精妙,如果固件层面的参数配置不当,整个系统依然无法稳…

2026/7/24 6:15:02 阅读更多 →
BQ4050 AFE保护配置实战:阈值与延迟的硬件安全防线设计

BQ4050 AFE保护配置实战:阈值与延迟的硬件安全防线设计

1. 项目概述:为什么AFE保护配置是BMS设计的“定海神针”如果你正在设计或调试一个基于TI BQ4050的电池管理系统(BMS),那么模拟前端(AFE)的保护阈值与延迟配置,绝对是你绕不开、也绝不能掉以轻心…

2026/7/24 6:15:02 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻