Пожалуйста, приведите пример кода

аюсь засолитьnamedtuple:

from collections import namedtuple
import cPickle

class Foo:

    Bar = namedtuple('Bar', ['x', 'y'])

    def baz(self):
        s = set()
        s.add(Foo.Bar(x=2, y=3))
        print cPickle.dumps(s)

if __name__ == '__main__':
    f = Foo()
    f.baz()

Это дает следующий вывод:

Traceback (most recent call last):
  File "scratch.py", line 15, in <module>
    f.baz()
  File "scratch.py", line 11, in baz
    print cPickle.dumps(s)
cPickle.PicklingError: Can't pickle <class '__main__.Bar'>: attribute lookup __main__.Bar failed

Что я делаю неправильно? Проблема в том, чтоBar является членомFoo? (Перемещение определенияBar на верхнем уровне решает проблему, хотя мне все равно любопытно, почему это происходит.)

Ответы на вопрос(2)

Ваш ответ на вопрос