相关疑难解决方法(0)

哪些类不能被子类化?

是否有关于哪些内置和标准库类不可子类化("最终")的规则?

从Python 3.3开始,这里有几个例子:

  • bool
  • function
  • operator.itemgetter
  • slice

我发现了一个问题,它涉及C语言和纯Python中"final"类的实现.

我想了解是什么原因可以解释为什么一个班级被选为首选的"最终".

python inheritance language-design class python-3.x

71
推荐指数
1
解决办法
6247
查看次数

为什么我不能在Python中扩展bool?

>>> class BOOL(bool):
...     print "why?"
... 
why?
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Error when calling the metaclass bases
    type 'bool' is not an acceptable base type
Run Code Online (Sandbox Code Playgroud)

我以为Python信任程序员.

python boolean restriction

26
推荐指数
4
解决办法
5476
查看次数

python如何阻止类被子类化?

我在python文档中遇到了以下内容:

布尔([X])

使用标准真值测试程序将值转换为布尔值.如果x为false或省略,则返回False; 否则返回True.bool也是一个类,它是int的子类.类bool不能进一步子类化.它唯一的例子是假和真.

我从来没有想过要进行子类化bool,但很自然地我立即尝试了它,果然:

>>> class Bool(bool):
    pass

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    class Bool(bool):
TypeError: Error when calling the metaclass bases
    type 'bool' is not an acceptable base type
Run Code Online (Sandbox Code Playgroud)

所以,问题是:这是怎么做到的?我可以应用相同的技术(或不同的技术)来标记我自己的类final,即保持它们不被子类化吗?

python final subclass

11
推荐指数
1
解决办法
2140
查看次数

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

可能重复:
Python 3.x中的最终类 - Guido没有告诉我什么?

我正在观看一个演讲(如何设计一个好的API以及它为何重要),据说,字面意思是" 继承的设计和文档,否则禁止它 ".谈话以Java为例,其中有' final '关键字禁止子类化.是否可以在Python中禁止子类化?如果是的话,看到一个例子真是太棒了...谢谢.

python

5
推荐指数
2
解决办法
4331
查看次数