首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Python中,如何禁止类继承?

在Python中,如何禁止类继承?
EN

Stack Overflow用户
提问于 2010-10-16 12:52:48
回答 2查看 8K关注 0票数 10

可能重复: Python 3.x中的最后一节课-- Guido没有告诉我吗?

我在看一个演讲(如何设计一个好的API以及为什么它很重要),其中说,“为了继承而设计和文档,否则禁止它”。本文以Java为例,其中包含“final”关键字,用于禁止子类化。是否可以禁止Python中的子类?如果是,很高兴看到一个例子..。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-16 13:05:22

这里没有Python关键字-它不是Pythonic的。

类是否可以子类由一个名为巴塞特的标志决定,该标志可以通过can设置。

当该类型可用作另一类型的基本类型时,将设置此位。如果这一点是明确的,类型不能被子类型(类似于Java中的“最终”类)。

但是,如果您愿意的话,可以只使用Python代码来模拟这种行为:

代码语言:javascript
代码运行次数:0
运行
复制
class Final(type):
    def __new__(cls, name, bases, classdict):
        for b in bases:
            if isinstance(b, Final):
                raise TypeError("type '{0}' is not an acceptable base type".format(b.__name__))
        return type.__new__(cls, name, bases, dict(classdict))

class C(metaclass=Final): pass

class D(C): pass

来源

票数 18
EN

Stack Overflow用户

发布于 2010-10-16 13:02:20

在我看来,类一般不应该有任何子类限制。我想建议第三种选择:在类的文档中添加一个注释,说明类不应该被子类化。

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

https://stackoverflow.com/questions/3948964

复制
相关文章

相似问题

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