Я хотел бы преобразовать мою программу в OOP со следующим классом:
class Person:
name: None
sent: None
recieved: None
totalNum = None
# Getters and setters are assumed
def __init__(self, name, sent, recieve):
self.name = name
self.sent = sent
self.recieve = receive
def totalMovements(self):
return self.sent+self.receive
У меня есть файл с несколькими строками, и меня интересует только самые первые и вторые элементы каждой строки.
Структура файла:
'BOB' 'SAMANTHA'
'JOHN' 'TOM'
'MAT' 'JEN'
'SIMON' 'BOB'
'TOM' 'CHARLIE'
'BOB' 'CHARLIE'
Частота появления имени для каждого столбца определяет номер количества отправленных (1-й столбец) и получает (2-й столбец) каждого человека.
Итак, в качестве примера, конечный результат должен быть:
output:
NAME SENT RECIEVE TOTALNUM
BOB 2 1 3
TOM 1 1 2
Поскольку в обоих столбцах находятся только BOB и TOM.
Пока я пытался создать каждый объект внутри одинаков для l oop при чтении файла и сохранении каждого объекта person в списке, но я не могу заставить его работать при попытке проверить, есть ли объект уже в списке.
Я знаю, что могу создать объект просто:
person_List = []
with open(fileName) as file:
for line in file:
words = line.split(';')
sent = words[0]
recieve = words[1]
if sent not in person_List:
person_List.append(Person(sent, 1, 0)
else:
# would retrieve the person existing in the list and setSent(1)
Но что-то я делаю неправильно, потому что не работает. Мне интересно, смогу ли я справиться со всеми проверками объекта Person, уже существующего в списке, и добавить к нему количество отправленных и полученных.
Любые подсказки?