2014-10-07 1 views
0

좋아, 내가 뭘 하려는지 사용자가 NoteSet을 만들 때 목록 양식으로 저장하는 객체를 얻는 것입니다. NoteSet ('ex', 'example', True)을 입력하면 목록 DB에 개체가 제대로 추가됩니다. makeNewNoteSet() 함수를 만들었고 제대로 작동하는 것 같지만 db 목록에 추가하지 않습니다. 나는 이유를 알 수 없다. 당신이 makeNewNoteSet()에서 새 메모를 추가 한 후목록에 객체 저장하기 python; 어떤 이유로 업데이트되지 않는 목록입니까?

import sys 
import datetime 
import pickle 
notesets = [] 
db = [] 
def save(): 
    global db 
    filename = "notesets.dat" 
    file = open(filename, "wb") 
    if file == None: 
     print("There was an error creating your file") 
     return 
    pickle.dump(db, file) 
    file.close() 
    print("Saved words to ",filename) 
def load(): 
    global db 
    filename = "notesets.dat" 
    file = open(filename, "rb") 
    db = pickle.load(file) 
    print("There are ",len(db)," Note Sets") 
    file.close() 

class NoteSet:  
    nextseqNum = len(db)+2 
    def __init__(self,name,description,hidden): 
     global db 
     self.seqNum = NoteSet.nextseqNum 
     self.name  = name 
     self.description = description 
     self.dateCreated = datetime.date.today() 
     self.hidden  = hidden 
     self.notes  = list() 
     NoteSet.nextseqNum += 1 
     print(self) 
     notesets.append(self) 
     notelist = [self.seqNum,self.name,self.description,self.dateCreated,self.hidden,self.notes] 
     print(notelist) 
     db.append(notelist) 

     NoteSet.nextseqNum += 1 
    def __str__(self): 
      printstr = str(self.seqNum),self.name,self.description,str(self.dateCreated) 
      printstr = str(printstr) 
      return printstr 

class Note: 
    nextseqNum = 0 
    def __init__(self,text,dateCreated,description,category,priority,hidden): 
     self.text  = text 
     self.dateCreated = str 
     self.dateRead = str 
     self.description = str 
     self.category = str 
     self.priority = int 
     self.hidden  = bool 
     self.seqNum  = Note.nextseqNum 
     Note.nextseqNum += 1 

def main(): 
    while True: 
     load() 
     printMainMenu() 
     selection = int(input("? ")) 

     if selection == 1: 
      listNoteSets() 
     elif selection == 2: 
      listAllNoteSets() 
     elif selection == 3: 
      makeNewNoteSet() 
     elif selection == 4: 
      selectNoteSet() # this makes the working note set 
     elif selection == 5: 
      deleteNoteSet() 
     elif selection == 6: 
      sys.exit() 
     else: 
      print("Invalid choice") 

def printMainMenu(): 
    print("1. List note sets") 
    print("2. List all note sets (including hidden sets)") 
    print("3. Make a new note set") 
    print("4. Select a working note set") 
    print("5. Delete a note set") 
    print("6. Quit") 

def listNoteSets(): 
    num = 0 
    for row in db: 
     if db[num][4] == False: 
      print('#',db[num][0],' ',db[num][1],'----',db[num][2]) 
     num += 1 
     input("[Press return to see main menu]") 
     main() 
def listAllNoteSets(): 
    num = 0 
    for row in db: 
     print('#',db[num][0],' ',db[num][1],'----',db[num][2]) 
     num += 1 
     input("[Press return to see main menu]") 
     main() 
def makeNewNoteSet(): 
    num = 0 
    name = input("What would you like to name your note set? --- ") 
    for row in db: 
     if name == db[num][1]: 
      print("That note set has already been created") 
      makeNewNoteSet()     
    description = input("Describe your note set briefly --- ") 
    hidden  = input("Would you like this note set to be hidden? --- ") 
    if hidden == 'y' or 'yes': 
     hidden = True 
    else: 
     hidden = False 
    NoteSet(name, description, hidden) 
    print("noteset created you can now access it through the menu") 
    input("[Press enter to return to menu]") 
    main() 
def selectNoteSet(): 
    num = 0 
    for row in db: 
     print('#',db[num][0],' ',db[num][1],'----',db[num][2]) 
     num += 1 
    response = input("Enter the number assosciated with the noteset you would like to access") 
    print("Note set #",response," was selected") 


main() 
+0

MakeNewNoteSet에서 db에 추가하는 코드가 보이지 않습니다. – alexis

+1

@alexis : 찾기가 쉽지 않습니다.'NoteSet .__ init__' 메소드에 있습니다. 나는 여전히 무엇이 잘못되었을지를 파악하려고 노력하고 있습니다. 이 코드는 코드 검토를 통과하지 못할 것입니다! –

+0

NoteSet 클래스의 db.append (notelist) –

답변

2

, 방금 변경 데이터베이스의 메모리 복사본을 덮어 load()를 호출 main()를 호출합니다. 거기 어딘가에 save()에 전화하고 싶을 것입니다.