在Python 3.x中,是否可以在项目附加到列表之前运行函数?
我有一个继承自列表的类,带有一些额外的自定义函数。我想对要添加到此列表的任何元素的数据执行一系列检查。如果添加的元素不符合某些条件,则列表将引发错误。
class ListWithExtraFunctions(list):
def __beforeappend__(self):
... run some code ...
... perform checks ...
... raise error if checks fail ...
答案 0 :(得分:3)
定义ListWithExtraFunctions.append
并在super().append(value)
通过所有检查后致电value
:
class ListWithExtraFunctions(list):
def append(self, value):
if okay():
return super().append(value)
else:
raise NotOkay()
答案 1 :(得分:0)
此选项与Vaultah编写的解决方案非常相似。它只使用“try ... except”,它允许你以某种方式处理异常。
class Nw_list(list):
def val_check(self, value):
# Accepts only integer
if type(value) == int:
return value
else:
# Any other input type will raise exception
raise ValueError
def append(self, value):
try:
# Try to append checked value
super().append(self.val_check(value))
except ValueError:
# If value error is raised prints msg
print("You can append only int values")