python __delete__ 不起作用

Lær*_*rne 0 python python-3.x

我正在尝试这个简单的python代码:

class A:
  def __init__( self ):
    self.a = { 'k' : 'kk' }
  def __delete__( self, key ):
    del self.a[key]
Run Code Online (Sandbox Code Playgroud)

这个简单的类不起作用。

>>> a = A()
>>> del a['k']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'A' object does not support item deletion
Run Code Online (Sandbox Code Playgroud)

那么我应该如何在 python 中正确实现项目删除?感谢您的帮助。

awe*_*oon 5

为了实现del a['k'](即通过索引删除项目)的行为,您应该实现__delitem__魔术方法:

In [1]: class A:
   ...:     def __init__(self):
   ...:         self.a = {'k': 'kk' }
   ...:     def __delitem__(self, key):
   ...:         del self.a[key]
   ...:         

In [2]: a = A()

In [3]: a.a
Out[3]: {'k': 'kk'}

In [4]: del a['k']

In [5]: a.a
Out[5]: {}
Run Code Online (Sandbox Code Playgroud)