Я пытаюсь организовать своих коров в словарь, получить доступ к их значениям и распечатать их на консоли.
Каждый экземпляр коровы присваивается индексу в списке коров.
Я пытаюсь создать словарь следующим образом:
for i in cows:
cowDict[i.getName] = (i.getWeight, i.getAge)
Я бы хотел получить доступ к значениям моего словаря, используя имена моих коров, а именно:
c["maggie"]
однако мой код выдает ключевую ошибку.
Если я распечатаю весь словарь, я получаю что-то такое:
"{<'связанный метод cow.getName of <' magg ie, 3, 1 >>: (<'связанный метод cow.getWeight of <' magg ie, 3, 1 >>, <'связанный метод cow.getAge of <' magg ie, 3, 1 >> ), et c ... } "
Я могу заменить .getName на переменную экземпляра и получить желаемый результат, однако, мне посоветовали отказаться от этого подхода.
Как лучше всего создавать словарь, используя переменные экземпляра типа cow?
Код:
class cow(object):
""" A class that defines the instance objects name, weight and age associated
with cows
"""
def __init__(self, name, weight, age):
self.name = name
self.weight = weight
self.age = age
def getName(self):
return self.name
def getWeight(self):
return self.weight
def getAge(self):
return self.age
def __repr__(self):
result = '<' + self.name + ', ' + str(self.weight) + ', ' + str(self.age) + '>'
return result
def buildCows():
"""
this function returns a dictionary of cows
"""
names = ['maggie', 'mooderton', 'miles', 'mickey', 'steve', 'margret', 'steph']
weights = [3,6,10,5,3,8,12]
ages = [1,2,3,4,5,6,7]
cows = []
cowDict = {}
for i in range(len(names)):
#creates a list cow, where each index of list cow is an instance
#of the cow class
cows.append(cow(names[i],weights[i],ages[i]))
for i in cows:
#creates a dictionary from the cow list with the cow name as the key
#and the weight and age as values stored in a tuple
cowDict[i.getName] = (i.getWeight, i.getAge)
#returns a dictionary
return cowDict
c = buildCows()