Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数,该函数执行某些操作并调用删除该操作的内置函数_Python_Class_Oop_Del - Fatal编程技术网

Python 函数,该函数执行某些操作并调用删除该操作的内置函数

Python 函数,该函数执行某些操作并调用删除该操作的内置函数,python,class,oop,del,Python,Class,Oop,Del,我正在构建一个任务管理器,我想使用一个完整的func来处理实例化的类对象,然后调用del并删除实例化的类对象。可能吗?我正在努力寻找解决办法 尝试使用类中的函数,并尝试查找有关此主题的文章,但没有成功 from datetime import date class reg_task: def __init__(self, what_to_do, date=date.today(), hour=None, tag=None, project="day to day task", prio

我正在构建一个任务管理器,我想使用一个完整的func来处理实例化的类对象,然后调用
del
并删除实例化的类对象。可能吗?我正在努力寻找解决办法

尝试使用类中的函数,并尝试查找有关此主题的文章,但没有成功

from datetime import date

class reg_task:
    def __init__(self, what_to_do, date=date.today(), hour=None, tag=None, project="day to day task", priority=None, remind_time=None):
        self.what_to_do = what_to_do
        self.date = date
        self.hour = hour
        self.tag = tag
        self.project = project
        self.priority = priority
        self.remind_time = remind_time

    def __str__(self):
        return f'task {self.what_to_do}, to-do-date - {self.date}'

    def tasks_complete(self):
        with open(r"C:\Users\Avi Fenesh\Desktop\python\tasks_project\archive\archive", "a") as archive:
            archive.write(f"{str(self)} \n")
        del self

问题在于
任务\u complete()
。当我调用函数时,它不会删除实例化的类对象。

这是因为只要有人持有对对象的引用,对象就不能被垃圾收集。仅仅做
del self
是不够的


请参阅:

是否有其他容器存放任务实例?您试图从何处删除实例?不,我尝试了一个简单的示例。已保存一个实例,然后尝试立即删除该实例。您如何判断该对象未被删除?我将尝试在Interpeters中再次呼叫他,以便有其他方法执行此操作并确保该实例不再存在?一旦没有对该实例的引用,该实例将自动删除。一般来说,除非您有非常具体的原因,否则您应该让垃圾收集为您处理这些事情。但我的想法是立即删除该实例。我将使用一个func来显示连接到当前日期的所有任务,我希望我标记为完成的实例不会出现在这种情况下,从存储任务的任何数据结构中删除任务,或者将其标记为完成或其他更简单,因此,当您显示任务时,您不会显示它。如果您执行了
a=reg_task()
,然后实例本身被删除,那么尝试使用
a
的以下代码会发生什么情况?