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 [85]:
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 " +
             )

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

In [83]:
pedro.__dict__


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

In [84]:
pedro.camina(5)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-84-ce0d340128fe> in <module>()
----> 1 pedro.camina(5)

<ipython-input-81-3e20a4a26dd2> in camina(self, pasos)
     12         return self.peso / self.altura
     13     def camina(self, pasos):
---> 14         print("Moviendose " + str(pasos) + " pasos a la pos " + self.pos)
     15         self.peso -= abs(pasos) / 1000
     16         self.pos += pasos # lo mismo que self.pos = self.pos + pasos

TypeError: must be str, not int

In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [61]:
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 [69]:
myfun(k2 = 200, k1 = -1000, 1, 2)


  File "<ipython-input-69-cda61e9b61f7>", line 1
    myfun(k2 = 200, k1 = -1000, 1, 2)
                               ^
SyntaxError: positional argument follows keyword argument

In [ ]: