Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

paramètres too many Pylint

0 votes

Bonjour
quelqu'un serait t'il me dire pourquoi pylint, me dit:
apps\core\functions\functions_postgresql.py:5:4: R0913: Too many arguments (6/5) (too-many-arguments)

sur:

class WithCnxPostgresql:
    """
    Classe de connection à postgresql avec with
    """
    def __init__(self, host, port, name, user, password):
        self.connexion = None
        self.host = host
        self.port = port
        self.dbname = name
        self.user = user
        self.password = password

        i = 0
        while i < 5:
            try:
                self.connexion = psycopg2.connect(
                    host=self.host,
                    port=self.port,
                    dbname=self.dbname,
                    user=self.user,
                    password=self.password
                )
                break

            except psycopg2.Error as error:
                log_line = f"WithCnxPostgresql error: {error}\n"
                print(log_line)

            i += 1

    def __enter__(self):
        return self.connexion

    def __exit__(self, exc_type, exc_val, exc_tb):
        if self.connexion is not None:
            self.connexion.close()

merci d'avance, de votre aide

demandé 18-Sep par bidochon (202 points)

2 Réponses

+1 vote

Il me semble que la pep8 conseil de limité à 5 arguments, comme l'indique pylint là avec (6/5)

def __init__(self, host, port, name, user, password)

j'en compte bien 6

répondu 18-Sep par ptank (328 points)

merci ptank,
alors du coup il faut utiliser *args?

Certaine fois on peut oublier la norme, sinon oui *args, **kwargs (j'aime bien nommer les entrées lors d'un appel). Ou sinon même un dict d'options ce qui revient au **kwargs.

0 votes

Pylint considère que 5 arguments pour une fonction ça va bien comme ça !
Or tu en as 6 d'où le message.

répondu 23-Sep par bob
...