我有一个子类,我希望它不包括基类中存在的类属性。
我试过了,但没用:
>>> class A(object):
... x = 5
>>> class B(A):
... del x
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
class B(A):
File "<pyshell#1>", line 2, in B
del x
NameError: name 'x' is not defined我该怎么做?
发布于 2011-05-19 14:07:27
仔细想想你为什么要这样做;你可能不这么做。考虑一下不要让B继承A。
子类化的思想是专门化一个对象。尤其是,类的子类应该是父类的有效实例:
>>> class foo(dict): pass
>>> isinstance(foo(), dict)
... True如果您实现了这个行为(例如,x = property(lambda: AttributeError)),那么您就破坏了子类概念,这是很糟糕的。
发布于 2013-04-10 07:58:15
您可以使用delattr(class, field_name)从类定义中删除它。
发布于 2011-05-19 10:43:17
你不需要删除它。就推翻它吧。
class B(A):
x = None或者干脆不引用它。
或者考虑不同的设计(实例属性?)。
https://stackoverflow.com/questions/6057130
复制相似问题