问题标签 [del]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
11581 浏览

python - Python del 类

假设我们在 python 中有一个类:

__del__在删除/垃圾收集任何A实例时调用。

是否可以为班级做同样的事情?我想在类本身被垃圾收集时调用一些方法,我假设这是在脚本退出时完成的。

提前感谢您的任何指点!


编辑:正如我所料,每个人都试图让我远离使用这种技术(我自己可能会发表这样的评论:)),尽管问题仍然存在:这可能吗?

我想要以下内容:我有一个带有需要清理的静态成员的类。

我想A.conn.close()被调用,但就在程序关闭之前 - 即当我知道将不再A创建更多实例时。我知道我可以用 来做到这一点atexit,但这看起来很丑陋。

0 投票
18 回答
2242163 浏览

python - 从字典中删除一个元素

有没有办法从 Python 的字典中删除一个项目?

此外,如何从字典中删除项目以返回副本(即,不修改原件)?

0 投票
8 回答
53355 浏览

python - 我不明白这个 python __del__ 行为

有人可以解释为什么以下代码的行为方式如下:

输出(注意从未调用 d2 的析构函数)是这个(python 2.7)

有没有办法“修复”代码,以便在不删除添加的方法的情况下调用析构函数?我的意思是,放置 d2.func = None 的最佳位置是在析构函数中!

谢谢

[编辑] 基于前几个答案,我想澄清一下,我不是在问使用__del__. 我试图创建最短的函数来展示我认为是非直觉的行为。我假设已经创建了一个循环引用,但我不确定为什么。如果可能的话,我想知道如何避免循环引用....

0 投票
24 回答
364544 浏览

python - del 在 Python 中什么时候有用?

我真的想不出 Python 需要del关键字的任何原因(而且大多数语言似乎没有类似的关键字)。例如,与其删除一个变量,不如直接赋值None给它。并且从字典中删除时,del可以添加一个方法。

是否有保留delPython 的理由,或者它是 Python 垃圾收集前的遗迹?

0 投票
4 回答
732 浏览

python - 使用 __del__ 将状态保存在文件中进行清理?

我有一个看起来像这样的类:

现在,这是在一个服务器程序中,所以它可能会在没有事先通知的情况下被信号关闭。如果可能的话,定义它以确保类保存它的信息是否安全?

如果没有,您会建议什么作为解决方案?

0 投票
8 回答
3560 浏览

python - Python:删除所有满足特定条件的列表索引

为了深入了解它,我正在尝试遍历 python 中的坐标对列表并删除其中一个坐标为负数的所有情况。例如:

在数组中:

我想删除其中任一坐标<0的所有对,留下:

我的问题是 python 列表不能有任何间隙,所以如果我这样循环:

当元素被删除时,所有索引都会发生变化,从而扰乱迭代并导致各种问题。我尝试将坏元素的索引存储在另一个列表中,然后循环遍历并删除这些元素,但我遇到了同样的问题:一旦一个元素消失,整个列表的移位和索引就不再准确。

有什么我想念的吗?

谢谢。

0 投票
3 回答
701 浏览

python - 如何调试未调用的 __del__()

__del__()用来写一个警告日志,以防对象在错误的内部状态下被删除(请不要对此感到愤怒)。

我试图测试它,但虽然我del my_object在测试中使用,但__del__()似乎没有被调用。

__del__()的参考警告了 3 种可能发生这种情况的情况,但没有给出如何调试它们的线索。

所以...我该如何调试它?

0 投票
3 回答
1143 浏览

python - 在列表中调用“del”

这打印2, 1, 0


  • 现在,被删除元素的顺序是在规范中定义的还是特定于实现的?(或者我可能不了解底层机制)

  • 例如,输出可以是0, 1, 2吗?我意识到该2, 1, 0命令可能是为了避免在删除元素时重新分配元素的内存,但问题仍然存在。

  • del l最后一个 -和del l[:]语句有什么区别?

0 投票
2 回答
8044 浏览

django - 从标准 Django 模型中删除字段

注意:这是在AbstractUser存在之前提出的,这可能是您现在想要使用的。

基本上我想从默认的 Django User 类中删除默认的电子邮件字段......

所有这些都给出了 AttributeError。以以下方式删除方法或属性虽然可以正常工作:

所以我很好奇为什么这不起作用;这些模型字段是什么类型的东西?

我尝试的另一件事是通过在 MyUser 中创建 email = None 来覆盖电子邮件,但这也不起作用(并且会更难看)。

提前致谢!

Ps 如果你想知道为什么;更多的是出于好奇,而不是应用程序真正需要它......但我认为最好不要在数据库中使用未使用的列。Pps 我不想更改 Django 文件以手动从用户中删除“电子邮件”。

编辑:这里的后续问题(对于那些想要做同样事情的人)在同步数据库之前,从标准 Django 模型中删除字段

0 投票
1 回答
2090 浏览

django - 在 syncdb 之前,从标准 Django 模型中删除字段

这是关于从标准 Django 模型中删除字段的后续问题。简而言之:可以从已创建的模型中动态删除字段,在本例中为字段 User.email 。因此,字段电子邮件将从用户中删除,而无需更改用户的代码。例如,请参见下面的代码。

我可以从模型(1)中动态删除一个字段,但这会在服务器启动时发生,并且在它存在时被撤消。由于 syncdb 不需要服务器正在运行,并且通常似乎忽略了删除代码(不知何故),这种方法不会阻止该字段出现在数据库中(2)。

有没有办法从模型中删除该字段(不更改它所在的文件,因为它是一个 Django 模型),以使其不会出现在数据库中的方式?

提前致谢!

标记

编辑:我的问题不是m = models.IntegerField()要从模型文件中删除文本“”并希望从数据库中删除该字段。问题是我正在使用下面的代码从已经在另一个文件中声明的模型中删除一个字段。我不认为每次运行 syncdb 时都使用 South 创建迁移是一种解决方案 (3)。

附加信息:

  • 1)目前,代码在models.py中,但我想将Django启动代码放在哪里?作品。
  • 2)我可以使用自定义查询在 post_syncdb 信号上删除它,但我希望更优雅的东西......或者更准确,更优雅。
  • 3)如果它甚至可以工作,因为显然syncdb仍然看到'删除'字段),所以我认为South会因为它仍然存在。

这是代码(models.py):

编辑:我检查(使用打印)并在syncdb上执行删除代码。它在创建表之前执行