Class Counter append-remove
Нужно реализовать класс, добавляющий и удаляющий из объекта типа Counter элементы: Я написала код и не могу понять, почему ответ выдает типа :<main.MyCounter at 0x1b9a5b8bb50>
from collections import deque
class MyCounter:
def __init__(self, iterable):
self._data = None
self._iterable=deque(iterable)
def append(self, item):
self.item=item
self._iterable.append (self.item)
def remove(self, item):
self._iterable.remove (self.item)
c = MyCounter('sdfghfddfsrfbgd')
c.append ('b')
c.remove ('c')
c
Ответы (1 шт):
Чтоб объект вывести в консоль или файл, его нужно преобразовать в строку. И это то, как по умолчанию работает такое преобразование - печатает имя класса и уникальный идентификатор объекта (что-то типа адрес в памяти).
Чтоб печаталось что-то более осмысленное определите метод __repr__ в классе:
class MyCounter:
... тут все как раньше
def __repr__(self):
return f"MyCounter[data={self._data}, iterable=${self._iterable}]"
Есть еще один метод __str__, который используется для преобразования в строку в некоторых случаях, и его тоже обычно имеет смысл переопределять. Тут смотрите в чем разница и когда какой используется.