[pyar] Llamar a un método en una clase. No funciona.
Ezequiel Garcia
elezegarcia en gmail.com
Jue Nov 8 21:08:32 ART 2012
Carlos,
On Thu, Nov 8, 2012 at 8:36 PM, Carlos Giménez <scire1905 en gmail.com> wrote:
> Hola a todos,
>
> actualmente estoy tratando de entrar al mundo de Python. En este momento
> estoy siguiendo un tutorial y en un punto desarrollo un script pero no
> funciona. Lo tomé exactamente como figura en el tuto.
>
> #!/usr/bin/env python
>
> class Atom (object):
>
> "A class to represent a single atom"
> def __init__(self, symbol, mass, position):
> self.symbol = symbol
> self.mass = mass
> self.position = position
>
> def symbol(self):
> return self.symbol
>
> def mass(self):
> return self.mass
>
> def position(self):
> return self.position
>
> oAtom = Atom('O', 15.9994, [0.0, 0.0, 0.0])
> hAtom1 = Atom('H', 1.0079, [0.0, 1.0, 0.0])
> hAtom2 = Atom('H', 1.0079, [1.0, 0.0, 0.0])
>
> print 'The mas of the second H atom is', hAtom2.position()
>
>
>
> No se como hacer para que imprima los parámetros que pido.
>
> Cualquier ayuda me sirve.
>
Ejecutando ese código obtengo esto:
Traceback (most recent call last):
File "atom.py", line 24, in <module>
print('The mas of the second H atom is', hAtom2.position())
TypeError: 'list' object is not callable
---
Lo cuál está perfecto, porque tenés una variable tipo lista llamada "position"
y esa variable no es un método, o en otras palabras no es "callable" (llamable).
O sea, el método "position" quedó tapado por la variable "position".
No soy experto en python, pero supongo que lo que está pasando es esto:
Cómo python es "muy" dinámico, primero se define un método con "def position".
(Este método se guarda en la variable "position", por decirlo así).
Luego en el __init__ (que NO es un constructor) se sobre-escribe la variable
y se guarda una lista. O sea, luego del __init__ hay una variable tipo lista
llamada "position". El método se perdió, fue reemplazado por la lista.
Si le ponés otro nombre a la lista o al método, te va a funcionar.
Por otro lado, te recomiendo NO usar nombres iguales para variables y para
métodos.
Bue... traté de explicarlo lo más claro posible. Si me equivoqué en algo,
pueden los esspertos corregirme ;-)
Ezequiel
More information about the pyar
mailing list