gpt4 book ai didi

python - 使功能不可覆盖

转载 作者:太空狗 更新时间:2023-10-29 17:09:20 24 4
gpt4 key购买 nike

我知道 python 函数默认是虚拟的。假设我有这个:

class Foo:
def __init__(self, args):
do some stuff
def goo():
print "You can overload me"
def roo():
print "You cannot overload me"

我不希望他们能够这样做:

class Aoo(Foo):
def roo():
print "I don't want you to be able to do this"

有没有办法防止用户重载 roo()?

最佳答案

Python 3.8(2019 年 10 月发布)为输入添加了 final 限定符。

final 限定符被添加到 typing 模块中——以 final 装饰器和 Final 类型注解的形式——用于三个相关目的:

  • 声明一个方法不应该被覆盖
  • 声明一个类不应该被子类化
  • 声明不应重新分配变量或属性
from typing import final

class Base:
@final
def foo(self) -> None:
...

class Derived(Base):
def foo(self) -> None: # Error: Cannot override final attribute "foo"
# (previously declared in base class "Base")
...

它符合您的要求,现在由核心 Python 支持。

看看PEP-591了解更多详情。

关于python - 使功能不可覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/321024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com