Python: Как подойти к нему OOP образом? - PullRequest
0 голосов
/ 21 февраля 2020

Я хотел бы преобразовать мою программу в 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, уже существующего в списке, и добавить к нему количество отправленных и полученных.

Любые подсказки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...