I have a subclass and I want it to not include a class attribute that’s present on the base class.
I tried this, but it doesn’t work:
>>> 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
How can I do this?
Think carefully about why you want to do this; you probably don’t. Consider not making B inherit from A.
The idea of subclassing is to specialise an object. In particular, children of a class should be valid instances of the parent class:
If you implement this behaviour (with e.g.
x = property(lambda: AttributeError)), you are breaking the subclassing concept, and this is Bad.