将元组传递给Python类方法

3 投票
3 回答
7033 浏览
提问于 2025-04-17 18:02

我其实对Python不太熟悉,但因为一本书的作者把代码示例写成了Python,所以我不得不处理这些代码。下面这段代码让我遇到了语法错误:

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)
...
...

错误信息: def add(self, (sub, pred, obj)): ^ SyntaxError: 语法错误

这是Python版本的问题吗?我好像不能直接把一个元组传递给类的方法。有什么建议吗?顺便说一下,我刚下载了Python 3.3的编译器。

3 个回答

1

那段代码是针对Python 2.7的,但在3.0版本及以后就不再有效了...

3

试试这样做:

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)
4

没错,这是一个Python版本的问题。在Python 3中,不再允许使用元组参数解包的语法。想了解更多信息和示例,可以查看这个链接:http://www.python.org/dev/peps/pep-3113/

撰写回答