

Olá, João! Tudo joia?
Faz sentido, sim, transformar o método listar_restaurantes em um @staticmethod. Isso porque ele não utiliza a instância da classe (ou seja, não usa self), mas sim a variável de classe restaurantes.
Para transformar o método em um método estático, você pode usar o decorador @staticmethod. Veja como ficaria:
class Restaurante:
restaurantes = []
def __init__(self, nome, categoria):
self.nome = nome
self.categoria = categoria
self.ativo = False
Restaurante.restaurantes.append(self)
def __str__(self):
return f'{self.nome} | {self.categoria}'
@staticmethod
def listar_restaurantes():
for restaurante in Restaurante.restaurantes:
print(f'{restaurante.nome} | {restaurante.categoria} | {restaurante.ativo}')
restaurante_praca = Restaurante('Praça', 'Gourmet')
restaurante_pizza = Restaurante('Pizza Express', 'Italiana')
Restaurante.listar_restaurantes()
Com essa modificação, o método listar_restaurantes não precisa mais de um parâmetro self e pode ser chamado diretamente pela classe, como você já estava fazendo.
Espero ter ajudado e bons estudos!