Ошибка с применением метода

Добрый день изучаю классы на Python, создаю легендарного сапера) Ошибка с передачей аргумента

from classes import *
import random

bomb_ratio = 3 


#Создание класса и индексов для класса
set_cell = [ 'x' + str(i) for i in range(9)]
for i in range(len(set_cell)):
    exec('{i} =  Cell({index})'.format(i=set_cell[i], index=i))

#Создание заряженных ячеек
x0.now_dangerous()

TypeError: now_dangerous() takes 0 positional arguments but 1 was given

Сам класс

class Cell(object):

    def __init__(self, index):
        self.index = index
        self.charge = 0
 
    def now_dangerous():
        #self.charge = 0
        pass   

В чем ошибка?


Ответы (1 шт):

Автор решения: V-Mor

Любому методу класса в Python при вызове первым аргументом автоматически передаётся self – объект этого класса, для которого вызывается метод (это делается для того, чтобы метод "понимал", с каким именно объектом он работает, объектов класса ведь может быть много, а метод на всех один). Причём передаётся всегда, даже если он Вам там не нужен. Следовательно, чтобы всё работало, этот аргумент нужно принимать. Перепишите метод now_dangerous так:

def now_dangerous(self):
    #self.charge = 0
    pass  
→ Ссылка