我知道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()?
您可以使用元类:
class NonOverridable(type):
def __new__(self, name, bases, dct):
if bases and "roo" in dct:
raise SyntaxError, "Overriding roo is not allowed"
return type.__new__(self, name, bases, dct)
class foo:
__metaclass__=NonOverridable
...
每当创建子类时,就会调用该元类型的 new 。如果您在场,这将导致错误。仅当没有基类时,它才会接受roo的定义。
您可以通过使用注释来声明哪些方法是最终方法,从而使该方法更加理想。然后,您需要检查所有基准并计算所有最终方法,以查看是否有任何基准被覆盖。
这仍然不能防止有人在定义方法后将猴子修补到类中。您可以尝试通过使用自定义词典作为类的词典来捕获这些错误(由于类可能要求类词典具有完全的dict类型,因此可能不适用于所有Python版本)。
问题内容: 该Web服务基于SSL且具有自签名证书,该证书托管在远程系统中。我已经创建了一个访问该Web服务的客户端。这是通过以编程方式将证书添加到密钥存储区来完成的 。 现在,我听说,不必为添加自签名Web服务而将证书添加到密钥存储中。 相反,我们可以通过覆盖某些方法来禁用证书检查。 这是真的?这些方法有哪些? 请帮忙。 问题答案: 这应该足够了。在针对没有适当签名的证书的测试和登台服务器测试代
问题内容: 我正在使用Sphinx的autodoc插件来自动记录一组模块。我有一个函数accepts ,我想重写文档以显示Python stdlib文档使用的稍微更好的样式。 是否可以覆盖特定功能的自动文档输出? 问题答案: 可以使用以下方法覆盖签名: 但是,具有覆盖签名的函数不会与通过引入的其他函数进行排序。对每个函数使用显式指令可以解决此问题: 加成 您还可以附加到文档字符串: 要覆盖签名和文
我正在开发一个模式锁定应用程序。 问题是,当手机屏幕关闭时,我的锁定活动显示为解锁,但当我按下移动主页键时,它就工作了。 在进入解锁模式之前,我想覆盖home key功能(因为它不工作)。 我谷歌了一下,但没有得到任何解决方案。 请帮帮我。
我正在使用Spring Boot 2.1.6.RELEASE,我想知道应该如何使用? 配置示例: 和位于不同的模块中。 错误: 无法注册在类路径资源[com/example/autoconf/configuration/app configuration . class]中定义的bean“foo”。已在类路径资源[com/my/configuration/myautoconfiguration .
问题内容: 在我正在从事的项目中,我们有通过Selenium编写的功能测试。该应用程序随每个功能发行版进行功能更改。 有没有一种工具/机制可以跟踪自动化功能测试中的差距,以便至少手动测试人员可以关注这些领域? 注意:我们并未执行FTDD,因此即使我们确保较高的单元测试覆盖率,功能测试覆盖率也可能会很差。我们使用NCover检查单元测试范围。 问题答案: 据我所知,至少有两个(商业但便宜)的工具可让
问题内容: 如果我上课: 我最初以为我可以通过添加扩展名来覆盖子类而无需子类化: 该代码不会编译,但错误说明了该函数,这很有意义。 我的问题是: 是否仍要重写特定类的功能?换句话说,在某些情况下,例如上面的示例中,我可以替换功能吗?如果没有,是否有其他解决方法或方法来实现该行为(可能声明了另一个协议,idk) 现在,我考虑得更多了,我不得不说这是不可能的,因为是什么阻止某人重写任何标准库函数? 问