为什么删除继承对象的属性?
class A(object):
def delete(self):
pass
def dont_delete(self):
pass
class B(A):
pass
del A.delete
del B.dont_delete
AttributeError: dont_delete
答案 0 :(得分:2)
dont_delete
未复制到B
;您只能从对象中删除直接属性。
Python通过委托继承链来查找实例和类的属性,而不是通过将属性复制到子类。因此,没有什么可以从子类中删除。
你不应该尝试'uninherit';当您使用A
作为基类时,您实际上声明B
与A
相同,只是更专业。该过程只应添加属性,而不是删除。相应地设计你的课程;例如,使用mixin基类来表示不应该总是继承的属性和方法。