У меня есть простой класс, чтобы просто хранить данные, которые связаны с печатной платой, как это:рассол экземпляр питон класса
class boardClass():
def __init__(self,boardName):
self.__name=boardName
self.__boardMappings= {boardName:{
'FastMode':
{'CPU_A':{'mipi':[], 'gpen':[]},
'CPU_B':{'mipi':[], 'gpen':[]}
'SlowMode':
{'CPU_A':{'mipi':[], 'gpen':[]},
'CPU_B':{'mipi':[], 'gpen':[]}
}
}
}
def setMode(self, board, mode, cpu,mipi,gpen):
self.__boardMappings[board][mode][cpu]['mipi']=mipi
self.__boardMappings[board][mode][cpu]['gpen']=gpen
def getName(self):
return self.__name
Я использую маринованные в другом классе, чтобы сохранить boardClass
данные в файл, а затем читать их:
def onSave(self,boardName):
board=boardClass.boardClass(boardName)
name=boardName+".brd"
file=open(name,"wb")
pickle.dump(board,file)
loadedBoard= pickle.load(open(file, "rb"))
print "Loaded board name is : ",loadedBoard.getName()
Когда я называю onSave()
метод замариновать в boardClass, он дает несколько ошибок, оканчивающиеся с этим в конце:
File "C:\Python27\lib\copy_reg.py", line 70, in _reduce_ex
raise TypeError, "can't pickle %s objects" % base.__name__
TypeError: can't pickle PySwigObject objects
Эта доскаКласс очень простой контейнер. Почему его нельзя мариновать?
[PEP 8] (http://www.python.org/dev/peps/pep-0008/) хотели бы вы назвать ваш класс 'Board' (а не' BoardClass', как вы знаете, это класс), 'setMode'' set_mode' и т. д. Также такие вещи, как пробелы после двоеточий в литерале dict и пробелы вокруг присваивания '='. Наконец, вы должны сделать 'class Board (object)', чтобы сделать его классом нового стиля. –
Ваш код не имеет смысла в его нынешнем виде. В каком классе определяется 'onSave'? Где 'boardName' определяется в' onSave'? Откуда появляется «PySwigObject» (вы явно делаете больше на доске, чем вы показали)? –
Крис, не имеет значения, где onSave() определяется его в другом классе и будет вызываться, когда пользователь хочет сохранить доску. (Или код, чтобы рассортировать его). Я не знаю, откуда PySwigObject приходит от меня. t есть, что в моем коде и для маринованной части это все код. Также выполнение класса Board (object) ничего не решило. –