Python中的类实例化

2024-09-30 10:40:37 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我找到了我感兴趣的这段代码,我想知道它最后一行的更多信息,这是:t = TelefonBok()。在

为什么需要它?代码只是一遍又一遍地调用它自己吗?在

不会占用很多记忆吗?它有没有可能只是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()

Tags: inselfnumberreturnifnamesdefline

热门问题