繁体   English   中英

用 Python 正确的语法扩展内置函数?

[英]Extending a built-in function in Python proper syntax?

class EvenOnly(list):
    def append(self, integer):
        if not isinstance(integer, int):
            raise TypeError(f"'{integer}' is not an integer.")
        if integer % 2:
            raise ValueError(f"'{integer}' is not an even integer")
        super().append(integer)

注意代码末尾的“super()”调用。 如果我将它更改为“list.append(integer)”,据我了解,它只是指定它正在调用的父类(类似于多继承),它在执行时会提供此错误:

TypeError: descriptor 'append' for 'list' objects doesn't apply to a 'int' object

这是为什么? 我知道在这种情况下没有必要指定父类,但我想知道是什么导致了错误。

相当于

super().append(integer)

在您的特定情况下将是

list.append(self, integer)

由于list是一种类型,因此您还需要显式指定列表。 list.append是一个函数对象,而self.append是一个绑定的方法对象 一个接受两个参数,另一个接受一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM