91 lines
2.2 KiB
Python
91 lines
2.2 KiB
Python
|
"""
|
||
|
Tipos de métodos
|
||
|
|
||
|
# Decoradores:
|
||
|
- Métodos de instancia:
|
||
|
|
||
|
def mi_metodo(self):
|
||
|
print('algo')
|
||
|
mi_metodo
|
||
|
|
||
|
- Acceden y modifican atributos del objeto.
|
||
|
- Acceden a otro métodos.
|
||
|
- Pueden modificar el estado de la clase.
|
||
|
|
||
|
- Métodos de clase @classmethod:
|
||
|
|
||
|
def mi_metodo(cls):
|
||
|
print('algo')
|
||
|
|
||
|
- No están asociados a las instancias de la clase, sino a la clase en si misma
|
||
|
- Pueden ser llamados desde la instancia y desde la clase
|
||
|
- No pueden acceder a los atributos de instancia pero si a los de la clase
|
||
|
|
||
|
- Métodos estáticos @staticmethod:
|
||
|
|
||
|
@staticmethod
|
||
|
def mi_metodo():
|
||
|
print('algo')
|
||
|
|
||
|
- No acepta como parámetro ni self ni cls
|
||
|
- No pueden modificar ni el estado de la clase ni de la instancia
|
||
|
- Pueden aceptar parámetros de entrada
|
||
|
"""
|
||
|
|
||
|
|
||
|
class Pajaro:
|
||
|
|
||
|
alas = True
|
||
|
|
||
|
def __init__(self, color, especie):
|
||
|
self.color = color
|
||
|
self.especie = especie
|
||
|
|
||
|
# Cuando se hace referencia a un atributo se debe poner self por delante
|
||
|
# para que se asocie correctamente
|
||
|
def piar(self):
|
||
|
print('pio, mi color es {}'.format(self.color))
|
||
|
|
||
|
def volar(self, metros):
|
||
|
print(f'El pajaro ha volado {metros} metros')
|
||
|
# De instancia - Acceden a otro métodos
|
||
|
self.piar()
|
||
|
|
||
|
# De instancia - Acceden y modifican atributos del objeto
|
||
|
def pintar_negro(self):
|
||
|
self.color = 'negro'
|
||
|
print(f'Ahora el pájaro es {self.color}')
|
||
|
|
||
|
# Métodos de clase. Necesita el decorador
|
||
|
@classmethod
|
||
|
def poner_huevos(cls, cantidad):
|
||
|
print(f'Puso {cantidad} huevos')
|
||
|
# No pueden acceder a los métodos de instancia
|
||
|
# print(f'Es de color {self.color}')
|
||
|
# Pero si que puede acceder a los métodos de clase
|
||
|
cls.alas = False
|
||
|
print(Pajaro.alas)
|
||
|
|
||
|
@staticmethod
|
||
|
def mirar():
|
||
|
# No accede ni a métodos de instancia ni de clase
|
||
|
# self.color = 'rojo'
|
||
|
# cls.alas = 2
|
||
|
# Así te aseguras que no se modifiquen los métodos
|
||
|
print('El pajaro mira')
|
||
|
|
||
|
|
||
|
Pajaro.poner_huevos(3)
|
||
|
|
||
|
Pajaro.mirar()
|
||
|
|
||
|
piolin = Pajaro('amarillo', 'canario')
|
||
|
|
||
|
piolin.pintar_negro()
|
||
|
|
||
|
piolin.volar(45)
|
||
|
|
||
|
# De instancia - Pueden modificar el estado de la clase
|
||
|
piolin.alas = False
|
||
|
print(piolin.alas)
|