Una clase es un proyecto o prototipo definido por el usuario a partir del cual se crean objetos. Las clases proporcionan un medio para agrupar datos y funcionalidad. La creación de una nueva clase crea un nuevo tipo de objeto, lo que permite crear nuevas instancias de ese tipo. Cada instancia de clase puede tener atributos adjuntos para mantener su estado. Las instancias de clase también pueden tener métodos (definidos por su clase) para modificar su estado.
Para comprender la necesidad de crear una clase en Python , consideremos un ejemplo, supongamos que desea rastrear la cantidad de perros que pueden tener diferentes atributos como raza, edad. Si se usa una lista, el primer elemento podría ser la raza del perro, mientras que el segundo elemento podría representar su edad. Supongamos que hay 100 perros diferentes, entonces, ¿cómo sabrías qué elemento se supone que es cuál? ¿Qué pasaría si quisieras agregar otras propiedades a estos perros? Esto carece de organización y es la necesidad exacta de las clases.
Class Definition Syntax: class ClassName: # Statement Object Definition Syntax: obj = ClassName() print(obj.atrr)
La clase crea una estructura de datos definida por el usuario, que contiene sus propios miembros de datos y funciones de miembros, a los que se puede acceder y utilizar creando una instancia de esa clase. Una clase es como un modelo para un objeto.
Algunos puntos en la clase de Python:
- Las clases se crean por clase de palabra clave.
- Los atributos son las variables que pertenecen a una clase.
- Los atributos son siempre públicos y se puede acceder a ellos mediante el operador de punto (.). Ej.: Miclase.Miatributo
Definición de una clase
Python3
# Python3 program to # demonstrate defining # a class class Dog: pass
En el ejemplo anterior, la palabra clave de clase indica que está creando una clase seguida del nombre de la clase (Perro en este caso).
Objetos de clase
Un objeto es una instancia de una clase. Una clase es como un modelo, mientras que una instancia es una copia de la clase con valores reales . Ya no es una idea, es un perro real, como un perro de raza pug que tiene siete años. Puede tener muchos perros para crear muchas instancias diferentes, pero sin la clase como guía, estaría perdido, sin saber qué información se requiere.
Un objeto consta de:
- Estado: Está representado por los atributos de un objeto. También refleja las propiedades de un objeto.
- Comportamiento: Está representado por los métodos de un objeto. También refleja la respuesta de un objeto a otros objetos.
- Identidad: Da un nombre único a un objeto y permite que un objeto interactúe con otros objetos.
Declaración de objetos (también llamada instanciación de una clase)
Cuando se crea un objeto de una clase, se dice que la clase está instanciada. Todas las instancias comparten los atributos y el comportamiento de la clase. Pero los valores de esos atributos, es decir, el estado son únicos para cada objeto. Una sola clase puede tener cualquier número de instancias.
Ejemplo:
Declarar un objeto
Python3
# Python3 program to # demonstrate instantiating # a class class Dog: # A simple class # attribute attr1 = "mammal" attr2 = "dog" # A sample method def fun(self): print("I'm a", self.attr1) print("I'm a", self.attr2) # Driver code # Object instantiation Rodger = Dog() # Accessing class attributes # and method through objects print(Rodger.attr1) Rodger.fun()
Producción:
mammal I'm a mammal I'm a dog
En el ejemplo anterior, se crea un objeto que es básicamente un perro llamado Rodger. Esta clase solo tiene dos atributos de clase que nos dicen que Rodger es un perro y un mamífero.
el yo
- Los métodos de clase deben tener un primer parámetro adicional en la definición del método. No damos un valor para este parámetro cuando llamamos al método, Python lo proporciona.
- Si tenemos un método que no acepta argumentos, todavía tenemos que tener un argumento.
- Esto es similar a este puntero en C++ y esta referencia en Java.
Cuando llamamos a un método de este objeto como myobject.method(arg1, arg2), Python lo convierte automáticamente en MyClass.method(myobject, arg1, arg2) – esto es de lo que se trata el yo especial.
método __init__
El método __init__ es similar a los constructores en C++ y Java. Los constructores se utilizan para inicializar el estado del objeto. Al igual que los métodos, un constructor también contiene una colección de declaraciones (es decir, instrucciones) que se ejecutan en el momento de la creación del Objeto. Se ejecuta tan pronto como se instancia un objeto de una clase. El método es útil para hacer cualquier inicialización que quieras hacer con tu objeto.
Python3
# A Sample class with init method class Person: # init method or constructor def __init__(self, name): self.name = name # Sample Method def say_hi(self): print('Hello, my name is', self.name) p = Person('Nikhil') p.say_hi()
Producción:
Hello, my name is Nikhil
Variables de clase e instancia
Las variables de instancia son para datos, únicos para cada instancia y las variables de clase son para atributos y métodos compartidos por todas las instancias de la clase. Las variables de instancia son variables cuyo valor se asigna dentro de un constructor o método con uno mismo, mientras que las variables de clase son variables cuyo valor se asigna en la clase.
Definición de variables de instancia mediante un constructor.
Python3
# Python3 program to show that the variables with a value # assigned in the class declaration, are class variables and # variables inside methods and constructors are instance # variables. # Class for Dog class Dog: # Class Variable animal = 'dog' # The init method or constructor def __init__(self, breed, color): # Instance Variable self.breed = breed self.color = color # Objects of Dog class Rodger = Dog("Pug", "brown") Buzo = Dog("Bulldog", "black") print('Rodger details:') print('Rodger is a', Rodger.animal) print('Breed: ', Rodger.breed) print('Color: ', Rodger.color) print('\nBuzo details:') print('Buzo is a', Buzo.animal) print('Breed: ', Buzo.breed) print('Color: ', Buzo.color) # Class variables can be accessed using class # name also print("\nAccessing class variable using class name") print(Dog.animal)
Producción:
Rodger details: Rodger is a dog Breed: Pug Color: brown Buzo details: Buzo is a dog Breed: Bulldog Color: black Accessing class variable using class name dog
Definición de variables de instancia utilizando el método normal.
Python3
# Python3 program to show that we can create # instance variables inside methods # Class for Dog class Dog: # Class Variable animal = 'dog' # The init method or constructor def __init__(self, breed): # Instance Variable self.breed = breed # Adds an instance variable def setColor(self, color): self.color = color # Retrieves instance variable def getColor(self): return self.color # Driver Code Rodger = Dog("pug") Rodger.setColor("brown") print(Rodger.getColor())
Producción:
brown
Publicación traducida automáticamente
Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA