将元组传递给python类方法

passing tuple into a python class method

本问题已经有最佳答案,请猛点这里访问。

我不是一个真正的python人,但我必须处理它,因为一本书的作者用python发布了他们的代码示例。我得到以下代码的语法错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class SimpleGraph:

    def __init__(self):
        self._spo = {}
        self._pos = {}
        self._osp = {}

    def add(self, (sub, pred, obj)):
       """
        Adds a triple to the graph.
       """

        self._addToIndex(self._spo, sub, pred, obj)
        self._addToIndex(self._pos, pred, obj, sub)
        self._addToIndex(self._osp, obj, sub, pred)
...
...

错误:定义添加(self,(sub,pred,obj)):^语法错误:无效语法

这是Python版本的问题还是什么?我似乎无法将元组以这种原始形式传递到类方法中。感谢您的建议。顺便说一下,我刚刚下载了python 3.3编译器。


是的,这是一个Python版本的问题。在python 3中不再允许使用tuple参数解包语法。请参阅http://www.python.org/dev/peps/pep-3113/了解如何替代。


尝试如下操作:

1
2
3
4
5
6
7
8
def add(self, myTup):
   """
    Adds a triple to the graph.
   """

    (sub, pred, obj) = myTup
    self._addToIndex(self._spo, sub, pred, obj)
    self._addToIndex(self._pos, pred, obj, sub)
    self._addToIndex(self._osp, obj, sub, pred)


这段代码是针对Python2.7的,但在3.0等版本中它不再有效…