Objetos y clases de Python

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.

python class

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:

python declaring an object

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *