Счетчик в экземпляре класса
Я новичок и хочу сделать счетчики для каждого экземпляра. Полученные ошибки в комментариях. Подскажите, что нужно гуглить?
current = '?'
class Simbol:
GALLERY = ('')
def __init__(self, count=0):
Simbol.GALLERY += self
self.count = count
#AttributeError: 'str' object
#attribute 'count' is read-only
def __add__(self):
self.count += 1
#TypeError: unsupported operand
#type(s) for +=:
#'builtin_function_or_method' and 'int'
print (self.count)
#<built-in method count of
#str object at 0x760183a270>
Simbol.__init__(current)
print (Simbol.GALLERY)
Simbol.__add__('?')
Ответы (2 шт):
Ну, тут у вас в принципе логика сломана.
Что такое у вас класс Simbol? Это один конкретный символ? Тогда почему у вас в нём метод add для добавления других символов?
Вообще не понятно, что вы пытаетесь делать в init, зачем там count в виде аргумента, и зачем вы этот метод вызываете явно.
Я бы сделал как-то так:
class Simbol:
GALLERY = []
def __init__(self, char):
Simbol.GALLERY += char
s1 = Simbol('?')
s2 = Simbol('?')
print(Simbol.GALLERY)
А count явно хранить вообще не нужно, его в любой момент можно вычислить как len(Simbol.GALLERY)
Счетчик встречаемости для каждого уникального символа в строке. GALLERY убрал за пределы класса. Я неправильно вызывал методы, вот рабочий промежуточный вариант:
class Simbol:
def __init__(self, sim, num=0):
self.num = num
self.sim = sim
def __add__(self):
self.num += 1
b = '?'
b = Simbol(b)
b.__add__()
print(b.sim)
print(b.num)