2015-10-20 70 views
-4

所以我找到了我感兴趣的代码,我想知道更多关于它的最后一行,这是:t = TelefonBok()Python中的类实例

为什么需要?代码是否一遍又一遍地调用自己?

不会占用大量内存吗?它可能只是return字典,并重新开始?

此代码旨在成为电话簿,打印和变量在瑞典语中。

class TelefonBok: 
    def __init__(self): 
     self.teleDic = {} 
     kommandonDic = {"add": self.add, "lookup": self.lookup, 
        "alias": self.alias, "save": self.save, 
        "load": self.load, "remove": self.remove, "quit": self.my_quit, "change": self.change} 

     while True: 
      x = raw_input("telebok> ") #prompt 
      y = x.split() 
      try: 
       kommandonDic[y[0]](*y[1:]) 
      except KeyError: 
       print "Denna funktion finns inte" 
      except TypeError: 
       print "du skriver fel antal argument" 
      except SystemExit: 
       print "Bye Bye" 
       break 


    def find(self, namn): 
     hittade = 0 
     nr = 0 
     for number, names in self.teleDic.items(): 
      if namn in names: 
       nr = number 
       hittade += 1 
     if hittade == 0: 
      return 0 
     elif hittade == 1: 
      return nr 
     else: 
      return -1 


    def add(self, namn, nummer): 
     print "Saving..." 
     self.teleDic[nummer] = [namn] 
     print "Save complete." 

    def lookup(self, namn = None): 
     if namn == None: 
      print "Ge ett namn!" 
     else: 
      hittade = 0 #Hittade är 0 från början 
      for number, names in self.teleDic.items(): 
       if namn in names: 
        print number 
        hittade = 1 
        print "Done..." 
      if hittade != 1: 
       print "Namnet finns inte" 

    def alias(self, namn, newname): 
     if newname: 
      nr = self.find(namn) 
      if nr > 0: #om nr är större än 0... 
       self.teleDic[nr].append(newname) 
       print "alias inserted..." 


    def change(self, namn, newnumber, oldnr = None): 
     if namn: 
      nr = self.find(namn) 
      if nr > 0: #om nr är större en 0. 
       self.teleDic[newnumber] = self.teleDic[nr] 
       del self.teleDic[nr] 
       print "name changed..." 
      elif nr == 0: 
       print "Hittar inga med det nummer" 
      else: 
       if oldnr: 
        self.teleDic[newnumber] = self.teleDic[oldnr] 
        del self.teleDic[oldnr] 
       else: 
        print "Flera personer har detta namn, ge nummer" 

    def save(self, filename): 
     f = open(filename, "w") 
     for number, names in self.teleDic.items(): 
      line = number + ";" + ";".join(names) + "\n" 
      f.write(line) 
      print "Saved..." 

    def load(self, filename): 
     self.teleDic = {} 
     f = open(filename, "r") 
     for line in f: 
      line = line.split(";") 
      nummer = line[0] 
      namn = line[1:] 
      self.teleDic[nummer] = namn 
      print "loading done..." 


    def remove(self, namn, nr=None): 
     nummer = self.find(namn) 
     if nummer > 0: 
      del self.teleDic[nummer] 
      print "Remove done..." 
     elif nummer == 0: 
      print "Namnet finns inte" 
     elif nummer == -1: 
      if nr: 
       del self.teleDic[nr] 
      else: 
       print "Flera personer har detta namn, ge nummer" 

    def my_quit(self): 
     print "Bye bye..." 
     raise SystemExit 



t = TelefonBok() 

回答

2

Python是以空格分隔的。 t = TelefonBok()不在类定义之外,并且正在创建该类的一个实例。