Métodos de clase versus instancia
La guía de estilo PEP 8 de Python recomienda usar "self" para los primeros argumentos del método de ejemplo y "cls" para la clase primeros argumentos del método. Comprender la distinción entre estos dos tipos de métodos es crucial para una programación orientada a objetos eficaz.
Los métodos de instancia están asociados con instancias específicas de una clase. Operan con los datos de la instancia y normalmente reciben "yo" como primer argumento. Al acceder a un método de instancia como, por ejemplo, object.method(), la instancia se pasa automáticamente al método.
Por ejemplo, considere la siguiente definición de clase:
class Person:
def __init__(self, name):
self.name = name
def greet(self):
print("Hello, my name is", self.name)
Aquí, "greet()" es un método de instancia que se puede invocar en cualquier instancia de la clase "Persona" con "object.greet( )".
Los métodos de clase, por otro lado, están asociados con la clase misma en lugar de con instancias individuales. Reciben "cls" como primer argumento, que representa la clase. Los métodos de clase se utilizan para tareas que pertenecen a la clase en su conjunto, como crear nuevas instancias o acceder a datos a nivel de clase.
El siguiente fragmento de código ilustra un método de clase:
class Math:
@classmethod
def sum(cls, a, b):
return a b
El método "Math.sum()" toma dos argumentos que se suman y se devuelven. Dado que es un método de clase, puedes invocarlo directamente como Math.sum(1, 2) para obtener el resultado.
Al comprender la diferencia entre los métodos de instancia y de clase, los desarrolladores pueden aprovechar de manera efectiva todas las capacidades del objeto. Programación orientada a Python.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3