[英]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.