首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:删除子类中的类属性

Python:删除子类中的类属性
EN

Stack Overflow用户
提问于 2011-05-19 10:19:20
回答 7查看 38.2K关注 0票数 57

我有一个子类,我希望它不包括基类中存在的类属性。

我试过了,但没用:

代码语言:javascript
复制
>>> 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

我该怎么做?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-05-19 14:07:27

仔细想想你为什么要这样做;你可能不这么做。考虑一下不要让B继承A。

子类化的思想是专门化一个对象。尤其是,类的子类应该是父类的有效实例:

代码语言:javascript
复制
>>> class foo(dict): pass
>>> isinstance(foo(), dict)
... True

如果您实现了这个行为(例如,x = property(lambda: AttributeError)),那么您就破坏了子类概念,这是很糟糕的。

票数 9
EN

Stack Overflow用户

发布于 2013-04-10 07:58:15

您可以使用delattr(class, field_name)从类定义中删除它。

票数 66
EN

Stack Overflow用户

发布于 2011-05-19 10:43:17

你不需要删除它。就推翻它吧。

代码语言:javascript
复制
class B(A):
   x = None

或者干脆不引用它。

或者考虑不同的设计(实例属性?)。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6057130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档