Если эти имена являются уникальными ключами, и все, что вы когда-либо собираетесь сделать, - это получить доступ к своим людям с помощью этого уникального ключа, вам лучше использовать словарь.
Однако, если вы хотите добавить больше атрибутов со временеми если вы хотите иметь возможность получить одного или нескольких человек по любому из этих атрибутов, вы можете выбрать более сложное решение:
class Example():
def __init__(self):
self.__pList = []
def addPerson(self,name,number):
self.__pList.append(Person(name,number))
def findPerson(self, **kwargs):
return next(self.__iterPerson(**kwargs))
def allPersons(self, **kwargs):
return list(self.__iterPerson(**kwargs))
def __iterPerson(self, **kwargs):
return (person for person in self.__pList if person.match(**kwargs))
class Person():
def __init__(self,name,number):
self.nom = name
self.num = number
def __repr__(self):
return "Person('%s', %d)" % (self.nom, self.num)
def match(self, **kwargs):
return all(getattr(self, key) == val for (key, val) in kwargs.items())
Итак, давайте предположим, что у нас есть один Майк и два Дейва
a = Example()
a.addPerson('dave',123)
a.addPerson('mike',345)
a.addPerson('dave',678)
Теперь вы можете найти людей по номеру:
>>> a.findPerson(num=345)
Person('mike', 345)
Или по имени:
>>> a.allPersons(nom='dave')
[Person('dave', 123), Person('dave', 678)]
Или оба:
>>> a.findPerson(nom='dave', num=123)
Person('dave', 123)