【发布时间】:2014-11-23 13:24:20
【问题描述】:
在像 java 这样使用静态绑定的语言中,您可以定义多个具有相同名称但参数不同的函数。学习 Python,直到现在我认为缺少这个主要是“安全问题”(比如 bool_parameter="False" 可能被解释为 True 因为引号)。我想我只是需要更加小心。
现在我发现了一种情况,缺少静态绑定简直不方便。请考虑这个元组:
var = ((1, "foo"), (2, "bar"), (3, "potato"))
要使用静态绑定从var 中删除项目,可以执行以下操作(伪代码:
def del_item(int i):
# search item with (x == i, *)
# remove this item
def del_item(String s):
# search item with (*, x == s)
# remove this item
我觉得这很方便,因为不需要条件来选择正确的操作来执行。此外,此代码使重载更容易,因为可以决定只重载其中一个函数或同时重载两者。
试图在 Python 中处理这样的情况,我只发现了一些不方便的解决方案,比如一些检查类型的 if 子句。
有没有更好的办法?
【问题讨论】:
-
你总是可以对一个类进行删除操作,所以你只需要求它删除,它的内部就会负责具体的删除操作。
-
这是两个不同的删除。第一个查找第一个元素,第二个查找第二个参数。通常这种删除发生在完全不同的情况下,因此 del_on_first_element 和 del_on_second_element 方法比类型重载要清晰得多。
标签: python dynamic-binding static-binding