所以我开始学习Python中的OOP。我有一个创建ToDoList的简单任务。我不需要以txt文件或其他格式保存任何内容。这是必须与我的程序一起使用的测试代码:
mylist = ToDoList('My sample ToDoList')
for i in range(1, 11):
task = Task(f'Simple task #{i}')
if i % 2:
task.finish()
mylist.add_task(task)
mylist.print_list()
这是预期的产出:
My sample ToDoList
###
[x] Simple task #1
[ ] Simple task #2
[x] Simple task #3
[ ] Simple task #4
[x] Simple task #5
[ ] Simple task #6
[x] Simple task #7
[ ] Simple task #8
[x] Simple task #9
[ ] Simple task #10
目前,我的代码如下所示:
class ToDoList(object):
def __init__(self, name):
self.n = name
print(name,"\n","#################")
self.d = None
def add_task(self, dic):
self.d = dic
def print_list(self):
for i in self.d:
if self.d[i] == 'undone':
print("[ ]" + str(i))
elif self.d[i] == 'done':
print("[x]" + str(i))
class Task:
tasks = {}
def __init__(self, task):
self.t = task
print(task)
self.tasks[task] = 'undone'
def finish(self):
self.tasks[task] = 'done'
mylist = ToDoList('My simple ToDoList')
for i in range(1, 11):
task = Task(f'Simple task #{i}')
if i % 2:
task.finish()
mylist.add_task(task)
mylist.print_list()
这是我目前代码的输出:
My simple ToDoList
#################
Simple task #1
Simple task #2
Simple task #3
Simple task #4
Simple task #5
Simple task #6
Simple task #7
Simple task #8
Simple task #9
Simple task #10
现在我被卡住了。我有一个部分,我创建了未完成任务的字典,然后将值更改为done。我想把这本字典传递给我的ToDoList类,然后只打印键和值。我觉得解决办法很简单,但我似乎找不到。我很乐意接受任何关于代码优化的建议
Python是面向对象编程的优秀语言,但它也有许多高级语言特性,使得一些用户定义的类变得不必要。例如,您的
ToDoList
添加的内容(当前)不超过Pythonlist
提供的内容。并不是说您将来可能不需要这样的类,但是当那个时候到来时,您可能希望添加类似列表的特殊方法,以允许它像真正的list
一样运行并支持迭代因此,对于一个精简的解决方案,我将重点放在
Task
类上,它是必需的,但不一定需要模仿字典。作为下一步,您可以开始向其添加属性和方法,以支持描述文本、截止日期等功能注意:将
print
之类的输出方法留在类之外几乎总是一个好主意。如果您希望您的类是可重用的,那么您会发现不同的客户机有不同的输出需求——让客户机而不是类来担心事情的输出端例如:
输出:
相关问题 更多 >
编程相关推荐