3

私は実際には 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 コンパイラをダウンロードしました。

4

3 に答える 3

4

はい、Python のバージョンの問題です。tuple-argument-unpacking 構文は、Python 3 では許可されなくなりました。代わりに何をすべきかの説明と例については、http://www.python.org/dev/peps/pep-3113/を参照してください。

于 2013-03-05T19:58:48.913 に答える
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)
于 2013-03-05T19:57:51.167 に答える
1

そのコードはpython 2.7用ですが、バージョン3.0などでは無効になっています...

于 2013-03-05T19:58:02.240 に答える