从字典中的对象访问方法

时间:2017-11-01 20:37:44

标签: python python-3.x

是否可以从循环访问外部类方法到字典? 这里有两个例子,一个通过循环访问列表,另一个通过字典访问。第一个完成我想要的字典(第二个):

ins.py

class Ins:
    def __init__(self, cognome, nome, indirizzo, entrate, spese):
        self.__cognome = cognome
        self.__nome = nome
        self.__indirizzo = indirizzo
        self.__entrate = entrate
        self.__spese = spese

    def get_cognome(self):
        return self.__cognome

    def get_nome(self):
        return self.__nome

    def get_indirizzo(self):
        return self.__indirizzo

    def get_totale(self):
        return str(float(self.__entrate) - float(self.__spese))

    def __str__(self):
        return "Cognome: " + self.__cognome + "\nNome: " + self.__nome + \
                 "\nIndirizzo: " + self.__indirizzo +\
                 "\nEntrate: " + self.__entrate + "\nSpese: " + self.__spese
ins_main_list.py   

import ins
dict = []

def main():
    again = 'y'
    while again.lower() == 'y':
        cognome = input('Inserire Cognome: ')
        nome = input('Inserire Nome: ')
        indirizzo = input('Inserire Indirizzo: ')
        entrate = input('Inserire Entrate: ')
        spese = input('Inserire Spese: ')
        again = input("Continuare con l'inserimento? (Y/N) ")
        print()
        entry = ins.Ins(cognome, nome, indirizzo, entrate, spese)
        dict.append(entry)
    for item in dict:
        print(item)
        print(item.get_totale())
        print()

 main()

ins_main_dict.py

import ins
dict = {}

def main():
    again = 'y'
    while again.lower() == 'y':
        cognome = input('Inserire Cognome: ')
        nome = input('Inserire Nome: ')
        indirizzo = input('Inserire Indirizzo: ')
        entrate = input('Inserire Entrate: ')
        spese = input('Inserire Spese: ')
        again = input("Continuare con l'inserimento? (Y/N) ")
        print()
        entry = ins.Ins(cognome, nome, indirizzo, entrate, spese)
        dict[cognome] = entry
    for item in dict:
        print(dict[item])
        print(item.get_totale())
        print()

main()

正如您在上一个示例中看到的,item.get_totale()给出了属性错误。怎么可能进入它?

1 个答案:

答案 0 :(得分:4)

我相信你应该dict[item].get_totale(),而不是item.get_totale()item正在迭代dict(字符串)的键,而不是您的自定义类