如何防止在python中重写函数

ola*_*ndo 31 python overriding final

有没有办法让类函数不可重复?类似java的final关键字.即,任何重写类都不能覆盖该方法.

Mic*_*fik 95

你可以在那里发表评论:

# We'll fire you if you override this method.
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,像这样的低技术解决方案在实践中如何运作.

  • 这应该是doc字符串(即API规范)的一部分,而不是注释 (6认同)
  • +1如果这是从用户错误报告中发现的,我们将解雇没有正确测试应用程序的墙壁. (2认同)

unh*_*ler 39

问题是您正在尝试使用Java哲学编写Python.有些东西会延续,但不是全部.在Python中,您可以执行以下操作,它完全没问题,但完全违背了Java对对象的看法.

class Thing(object):
    x = 1
something = Thing()
something.y = something.x
Run Code Online (Sandbox Code Playgroud)

如果你真的想要它,你可以试试这里发布代码.但是你可以看到有很多代码可以让它做你想做的事情.还应该注意的是,即使发布代码的人说它可以通过使用__dict__或传递object.__setattr__.

  • 为什么-1?我没有写我链接的代码,我不鼓励它使用.我发现它是谷歌搜索,并认为它有助于证明我的观点,试图强制执行最终在python中不是一个好主意. (23认同)
  • 提出答案.我不认为链接一个代码来显示它之前是如何被尝试过的,而且是不好的! (11认同)
  • 用“哲学”来证明该语言的缺点是 Java 哲学;)。Python 自 3.8 起就有了“final”(https://www.python.org/dev/peps/pep-0591/) (5认同)
  • -1这样的代码值得马西诺特纪念奖的徒劳防御机制. (4认同)
  • 甚至链接到它. (2认同)