Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 27, 2010 09:57:22

astalavista
От:
Зарегистрирован: 2010-09-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

поясните про класс

на входе есть строка ввида:

a = "'Vasya'~'20':'Petya'~'15':'Kolya'~'25':'Vova'~'9'"
пытаюсь написать класс обрабатывающий(парсит, сортирует) эту строку

class A:
def func(self,mdata):
records = []
allrecords = mdata.split(':')
for record in allrecords:
values = record.split('~')

records.append(values)
records.sort(key=lambda item: item[1])
self.data = records
——–

Сортирует это дело не правильно , так как пытается сортировать, как строку, а надо как число, то есть
records.sort(key=lambda item: item)
как-то надо поправить
PS. С сортировкой разобрался
records.sort(key=lambda item: int(item))


И самое главное хотелось бы обращаться к обекту так
obj = A()
print obj.func(a).data[0] #работает и выводит ['Petya','15']

print obj.func(a).data[0].name #должно выводить 'Petya'
print obj.func(a).data[0].age #должно выводить 15
как задать атрибуты - name и age, нужен вложенный класс или что? подскажите направление



Отредактировано (Сен. 27, 2010 11:09:26)

Офлайн

#2 Сен. 27, 2010 11:19:42

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

поясните про класс

Нужно обернуть name и age в класс. Т.е. что-то такое:

class Person:
def __init__(self, name, age):
self.name = name
self.age = age
И в список records складывать экземпляры Person:
records.append(Person(values[0], values[1]))
Тогда с ними можно будет работать как с объектами.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version