Вам нужно поместить все экземпляры Person
в какой-то контейнер, например список или словарь.Поскольку вы хотите искать экземпляр по их атрибуту navn
, словарь имеет больше смысла, так как вы можете сделать его ключи такими же, как атрибут, который уменьшит «поиск» до простого поиска.Использование списка потребовало бы итерации по экземплярам Person
в списке до тех пор, пока не будет найден экземпляр с соответствующим атрибутом - гораздо более медленный процесс.
Вот решение, показывающее, как это можно сделать:
class Person:
def __init__(self, navn, tlf):
self.navn = navn
self.tlf = tlf
def printname(self):
print(self.navn, self.tlf)
def search(persons):
navi = input("navi? ")
try:
persons[navi].printname()
except KeyError:
print(navi + ' not found')
people = dict(
Kari = Person("Kari", 98654321),
Liv = Person("Liv", 99776655),
Ola = Person("Ola", 99112233),
Anne = Person("Anne", 98554455),
Jens = Person("Jens", 99776612),
Per = Person("Per", 97888776),
Else = Person("Else", 99455443),
Jon = Person("Jon", 98122134),
Dag = Person("Dag", 99655732),
Siv = Person("Siv", 98787896),
)
search(people)