以下是有效的__delattr__方法嗎?class Item: def __delattr__(self, attr): if attr in self.__dict__: print ('Deleting attribute: %s' % attr) super().__delattr__(attr) else: print ('Already deleted this attribute!')具體來說,super()“實際刪除”屬性的正確方法是什么?并且是attr in self.__dict__檢查屬性是否在實例中的正確方法嗎?
1 回答

蝴蝶刀刀
TA貢獻1801條經驗 獲得超8個贊
super 會調用父類對應的方法,你可以在這里實現自己的特殊方法,不需要參考它的 super 實現。考慮以下:
class Item:
def __delattr__(self, attr):
try:
print ('Deleting attribute: %s' % attr)
del self.__dict__[attr]
except KeyError:
print ('Already deleted this attribute!')
測試類:
>>> i.test = 'a value'
>>> del i.test
Deleting attribute: test
>>> del i.test
Deleting attribute: test
Already deleted this attribute!
添加回答
舉報
0/150
提交
取消