Programación orientada a objetos en Python
Alex Yarosh
Content Quality Analyst @ DataCamp
self como primer argumentoself.___
class MyClass:
# definición de función en clase
# primer argumento es self
def my_method1(self, other_args...):
# haz cosas aquí
def my_method2(self, my_attr):
# atributo creado por asignación
self.my_attr = my_attr
...
__init__() se llama cada vez que se crea un objeto.class Customer: def __init__(self, name): self.name = name # <--- Crea el atributo .name y asígnalo al parámetro name print("El método __init__ fue llamado")cust = Customer("Lara de Silva") #<--- __init__ se llama implícitamente print(cust.name)
El método __init__ fue llamado
Lara de Silva
class Customer: def __init__(self, name, balance): # <-- parámetro balance añadidoself.name = name self.balance = balance # <-- atributo balance añadido print("El método __init__ fue llamado")cust = Customer("Lara de Silva", 1000) # <-- __init__ es llamado print(cust.name) print(cust.balance)
El método __init__ fue llamado
Lara de Silva
1000
class Customer: def __init__(self, name, balance=0): #<-- valor por defecto para balanceself.name = name self.balance = balance print("El método __init__ fue llamado")cust = Customer("Lara de Silva") # <-- no especificar balance explícitamenteprint(cust.name) print(cust.balance) # <-- atributo creado de todos modos
El método __init__ fue llamado
Lara de Silva
0
class MyClass:
def my_method1(self, attr1):
self.attr1 = attr1
...
def my_method2(self, attr2):
self.attr2 = attr2
...
obj = MyClass()
obj.my_method1(val1) # <-- attr1 creado
obj.my_method2(val2) # <-- attr2 creado
class MyClass: def __init__(self, attr1, attr2): self.attr1 = attr1 self.attr2 = attr2 ...# Todos los atributos se crean obj = MyClass(val1, val2)
__init__()__init__()CamelCase para clases, lower_snake_case para funciones y atributos
__init__()CamelCase para clase, lower_snake_case para funciones y atributos
self como selfclass MyClass:
# Esto funciona pero no es recomendable
def my_method(kitty, attr):
kitty.attr = attr
__init__()CamelCase para clase, lower_snake_case para funciones y atributos
self es selfclass MyClass:
"""Esta clase no hace nada"""
pass
Programación orientada a objetos en Python