python\uuuu delete\uuuu不工作
我正在尝试以下简单的python代码:python\uuuu delete\uuuu不工作,python,python-3.x,Python,Python 3.x,我正在尝试以下简单的python代码: class A: def __init__( self ): self.a = { 'k' : 'kk' } def __delete__( self, key ): del self.a[key] 这个简单的类不起作用 >>> a = A() >>> del a['k'] Traceback (most recent call last): File "<stdin>", li
class A:
def __init__( self ):
self.a = { 'k' : 'kk' }
def __delete__( self, key ):
del self.a[key]
这个简单的类不起作用
>>> a = A()
>>> del a['k']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'A' object does not support item deletion
>a=a()
>>>dela['k']
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“A”对象不支持项删除
那么,我应该如何在python中正确地实现项删除呢?谢谢您的帮助。为了实现
dela['k']
(即按索引删除项目)的行为,您应该实现以下神奇方法:
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]: {}
为了实现
dela['k']
的行为(即按索引删除项目),您应该实现以下神奇方法:
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]: {}
del(self,key):
这应该是什么?提问前请发布功能代码。如果您想实现\uuuuu delete\uuuuu
功能(这是一种神奇的方法,当您“键入”dela[x]
时会调用)然后您应该实现\uuuuu delete\uuuuu
功能,即将del
重命名为\uuuu delete\uuuu
并在front@syntonym:Python中没有\uuuuu delete\uuuu
钩子方法,至少在外部没有。有一个,但只有当对象本身从内存中删除时才会调用。考虑到帖子中“方法”的实现,我怀疑他们在寻找。@MartijnPieters有一个我用错了:@Lærne:对,这是在描述符上,描述符是可以添加到类中的对象,当你通过类的实例与它们交互时,它们会被调用方法。这就是绑定方法和property
对象的方式。糟糕的是,我忘记了\uuuu delete\uuuu
甚至已经存在(我只是忘记了那个钩子的名字,我不经常需要使用它)。del(self,key):
这应该是什么?提问前请发布功能代码。如果您想实现\uuuuu delete\uuuuu
功能(这是一种神奇的方法,当您“键入”dela[x]
时会调用)然后您应该实现\uuuuu delete\uuuuu
功能,即将del
重命名为\uuuu delete\uuuu
并在front@syntonym:Python中没有\uuuuu delete\uuuu
钩子方法,至少在外部没有。有一个,但只有当对象本身从内存中删除时才会调用。考虑到帖子中“方法”的实现,我怀疑他们在寻找。@MartijnPieters有一个我用错了:@Lærne:对,这是在描述符上,描述符是可以添加到类中的对象,当你通过类的实例与它们交互时,它们会被调用方法。这就是绑定方法和property
对象的方式。糟糕的是,我甚至忘记了\uuuuu delete\uuuuuu
(我只是忘记了那个钩子的名字,我不经常需要使用它)。