Anatomía de una clase: atributos y métodos

Programación orientada a objetos en Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Una clase básica

class Customer:

# el código para la clase va aquí
pass
  • class <name>: inicia una definición de clase
  • el código dentro de class está indentado
  • usa pass para crear una clase "vacía"
c1 = Customer()
c2 = Customer()
  • usa ClassName() para crear un objeto de la clase ClassName
Programación orientada a objetos en Python

Agregar métodos a una clase

class Customer:  

    def identify(self, name):   
      print("Soy el Cliente " + name)
  • definición de método = definición de función dentro de la clase
  • usa self como el 1er argumento en la definición del método
cust = Customer()
cust.identify("Laura")
Soy el Cliente Laura
  • ignora self al llamar al método en un objeto
Programación orientada a objetos en Python
class Customer:  

    def identify(self, name):   
      print("Soy el Cliente " + name)

cust = Customer()
cust.identify("Laura")

¿Qué es self?

  • las clases son plantillas, ¿cómo referirse a los datos de un objeto particular?
  • self es un sustituto para un objeto particular usado en la definición de clase
  • debe ser el primer argumento de cualquier método
  • Python se encargará de self cuando se llame al método desde un objeto:

cust.identify("Laura") se interpretará como Customer.identify(cust, "Laura")

Programación orientada a objetos en Python

Necesitamos atributos

  • Encapsulación: agrupar datos con métodos que operan sobre ellos
  • Ej. el nombre de Customer debería ser un atributo

  $$\text{\Large{Los atributos se crean mediante asignación (=) en métodos}}$$

Programación orientada a objetos en Python

Agregar un atributo a la clase

class Customer:  
    # establecer el atributo name de un objeto a new_name
    def set_name(self, new_name):

# Crear un atributo asignando un valor self.name = new_name # <-- creará .name cuando se llame a set_name
cust = Customer()                   # <--.name aún no existe aquí

cust.set_name("Lara de Silva") # <--.name se crea y se establece en "Lara de Silva"
print(cust.name) # <--.name se puede usar
Lara de Silva
Programación orientada a objetos en Python

Versión antigua

class Customer:  



    # Usando un parámetro
    def identify(self, name):   
      print("Soy el Cliente" + name)
cust = Customer()

cust.identify("Eris Odoro")
Soy el Cliente Eris Odoro

Nueva versión

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # Usando .name del objeto it*self*
    def identify(self):     
      print("Soy el Cliente" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
Soy el Cliente Rashid Volkov
Programación orientada a objetos en Python

¡Vamos a practicar!

Programación orientada a objetos en Python

Preparing Video For Download...