如何为自定义Python类实现带属性删除限制的__delattr__方法?
如何在Python类中限制特定属性的删除操作?
这里有一个实用的示例,通过重写__delattr__方法来实现对特定属性删除的限制:
class MyClasse: nom = "me" age = 24 def __delattr__(self, name): # 禁止删除nom属性 if name == "nom": raise AttributeError("you are not allowed") # 其他属性正常执行删除 else: object.__delattr__(self, name) # 实例化类 A = MyClasse() # 可以正常删除age属性 del A.age
代码细节说明:
__delattr__是Python的特殊方法,当你对对象执行del操作删除属性时,这个方法会被自动触发- 我们在方法里加入了判断逻辑:如果要删除的属性是
nom,就抛出AttributeError来阻止删除操作 - 对于其他属性(比如示例中的
age),则调用父类object的__delattr__方法,完成正常的属性删除流程 - 如果尝试执行
del A.nom,程序会直接抛出AttributeError: you are not allowed,以此达到限制特定属性删除的目的
内容的提问来源于stack exchange,提问作者Ishak Hamed
相关产品推荐
相关产品推荐

