Счетчик в экземпляре класса

Я новичок и хочу сделать счетчики для каждого экземпляра. Полученные ошибки в комментариях. Подскажите, что нужно гуглить?

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 шт):

Автор решения: Xander

Ну, тут у вас в принципе логика сломана.

Что такое у вас класс 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)
→ Ссылка