In [16]:
def assign(alist, pos, value):
    alist[pos] = value

In [17]:
x = [1,2,3]

In [18]:
assign(x, 0, 9)

In [19]:
x


Out[19]:
[9, 2, 3]

In [20]:
class something:
    def __init__(self, val):
        self.value = val

In [22]:
x = something(3)

In [23]:
x.value


Out[23]:
3

regresando al ejemplo


In [45]:
class Persona:
    def __init__(self, nombre, edad, altura, peso):
        self.nombre = nombre
        self.edad = edad
        self.altura = altura
        self.peso = peso
        self.gordura = peso / altura

In [48]:
juan = Persona("Juan Perez", 30, 175, 80)

In [49]:
juan.__dict__


Out[49]:
{'altura': 175,
 'edad': 30,
 'gordura': 2.1875,
 'nombre': 'Juan Perez',
 'peso': 80}

In [50]:
juan.peso = 76

In [51]:
juan.__dict__


Out[51]:
{'altura': 175,
 'edad': 30,
 'gordura': 2.1875,
 'nombre': 'Juan Perez',
 'peso': 76}

Haber puesto gordura de esta forma fue mala idea porque no cambio cuando se actualizo el peso (Juan se puso a dieta)... Debe ser un metodo!


In [52]:
class Persona:
    "Esta es una clase de personas"
    def __init__(self, nombre, edad, altura, peso):
        "Hola soy el constructor"
        self.nombre = nombre
        self.edad = edad
        self.altura = altura
        self.peso = peso
    def gordura(self):
        "Hola yo calculo el peso"
        return self.peso / self.altura

In [53]:
juan = Persona("Juan Perez", 30, 175, 80)

In [54]:
juan.gordura()


Out[54]:
2.1875

In [55]:
juan.peso = 76

In [56]:
juan.gordura()


Out[56]:
2.3026315789473686

In [86]:
class Persona:
    "Esta es una clase de personas"
    def __init__(self, nombre, edad, altura, peso, pos = 0):
        "Hola soy el constructor"
        self.nombre = nombre
        self.edad = edad
        self.altura = altura
        self.peso = peso
        self.pos = pos
    def gordura(self):
        "Hola yo calculo el peso"
        return self.peso / self.altura 
    def camina(self, pasos):
        self.pos += pasos # lo mismo que self.pos = self.pos + pasos
        self.peso -= abs(pasos) / 1000
        print("Moviendose " + str(pasos) + 
              " pasos a la posicion " + str(self.pos) + " , adelganzado a " +
              str(self.peso) + "kg")

In [87]:
pedro = Persona("Pedro Caminante", 30, 175, 79)

In [88]:
pedro.__dict__


Out[88]:
{'altura': 175, 'edad': 30, 'nombre': 'Pedro Caminante', 'peso': 79, 'pos': 0}

In [89]:
pedro.camina(5)


Moviendose 5 pasos a la posicion 5 , adelganzado a 78.995kg

In [90]:
pedro.camina(10000)


Moviendose 10000 pasos a la posicion 10005 , adelganzado a 68.995kg

HERENCIA


In [104]:
class Godin(Persona):
    def hazte_guey(self):
        print("saliendo a fumar...")
    def mal_del_puerco(self):
        self.peso += 1
        print("Fui a la fonda y pedi postre... ahora peso " + str(self.peso) + "kg")

In [105]:
godinez = Godin("...Godinez", 15, 150, 52)

In [106]:
godinez.__dict__


Out[106]:
{'altura': 150, 'edad': 15, 'nombre': '...Godinez', 'peso': 52, 'pos': 0}

In [107]:
type(godinez)


Out[107]:
__main__.Godin

In [108]:
godinez.hazte_guey()


saliendo a fumar...

In [119]:
godinez.mal_del_puerco()


Fui a la fonda y pedi postre... ahora peso 63kg

In [122]:
godinez.camina(10000)


Moviendose 10000 pasos a la posicion 10000 , adelganzado a 53.0kg

Cuando hay nuevos campos...


In [140]:
class Programador(Godin):
    def __init__(self, nombre, edad, altura, peso, lenguaje, pos = 0):
        Persona.__init__(self, nombre, edad, altura, peso, pos)
        self.lenguaje = lenguaje
    def hazte_guey(self): # override
        print("Estoy compilando en " + self.lenguaje + " ...")

In [141]:
seiya = Programador("El Brayan", 21, 170, 100, "Python")

In [142]:
seiya.__dict__


Out[142]:
{'altura': 170,
 'edad': 21,
 'lenguaje': 'Python',
 'nombre': 'El Brayan',
 'peso': 100,
 'pos': 0}

In [143]:
seiya.hazte_guey()


Estoy compilando en Python ...

In [ ]:


In [1]:
def myfun(x,y,k1 = -10, k2 = -100):
    print({'x': x, 'y':y, 'k1':k1, 'k2':k2})

In [62]:
myfun(1,2,3,4)


{'x': 1, 'y': 2, 'k1': 3, 'k2': 4}

In [63]:
myfun(1,2)


{'x': 1, 'y': 2, 'k1': -10, 'k2': -100}

In [64]:
myfun(1,1,1)


{'x': 1, 'y': 1, 'k1': 1, 'k2': -100}

In [67]:
myfun(1,2, k2 = 200)


{'x': 1, 'y': 2, 'k1': -10, 'k2': 200}

In [68]:
myfun(1,2, k2 = 200, k1 = -1000)


{'x': 1, 'y': 2, 'k1': -1000, 'k2': 200}

In [3]:
myfun(1, 2, k2 = 200, k1 = -1000)


{'k2': 200, 'k1': -1000, 'y': 2, 'x': 1}

In [ ]: