¿Diferencia entre 'cls' y 'self' en las clases de Python?

Resuelto Scaraffe asked hace 13 años • 0 respuestas

¿ Por qué clsa veces se usa en lugar de selfcomo argumento en las clases de Python?

Por ejemplo:

class Person:
    def __init__(self, firstname, lastname):
        self.firstname = firstname
        self.lastname = lastname

    @classmethod
    def from_fullname(cls, fullname):
        cls.firstname, cls.lastname = fullname.split(' ', 1)
Scaraffe avatar Jan 06 '11 15:01 Scaraffe
Aceptado

La distinción entre "self"y "cls"se define en PEP 8. Como dijo Adrien, esto no es obligatorio. Es un estilo de codificación. PEP 8dice:

Argumentos de función y método :

Úselo siempre selfcomo primer argumento para instanciar métodos.

Úselo siempre clscomo primer argumento de los métodos de clase.

Baskaya avatar Jan 25 '2011 15:01 Baskaya

clsimplica que el método pertenece a la clase, mientras que self implica que el método está relacionado con la instancia de la clase, por lo tanto, clsse accede al miembro con por el nombre de la clase, mientras que al que tiene self se accede por instancia de la clase... es el mismo concepto como static membery non-static membersen java si tienes experiencia en java.

abdilatif bashir avatar Mar 11 '2018 14:03 abdilatif bashir