Foros del Web » Programando para Internet » Python »

problemas objetos y clases

Estas en el tema de problemas objetos y clases en el foro de Python en Foros del Web. Buenas! Llevo apenas una semana probando python, y me está resultando un poco complicado, ya que estoy acostumbrada a programar en Java, y hay cosas ...
  #1 (permalink)  
Antiguo 21/01/2009, 06:03
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 15 años, 11 meses
Puntos: 0
problemas objetos y clases

Buenas!

Llevo apenas una semana probando python, y me está resultando un poco complicado, ya que estoy acostumbrada a programar en Java, y hay cosas que son distintas.

Programo en ubuntu y utilizo el plugin de elipse pydev.

Tengo una clase coche en un fichero.

Código:
class coche:
    
    def arrancar(self):
        print "coche arrancando"
y quiero ejecutar el método arrancar de la clase coche desde otro fichero:

Código:
micoche=coche()
coche.arrancar()
el error que da es: NameError: name 'coche' is not defined

qué está mal? cómo se hacen llamadas a métodos de otros objetos desde un fichero que no es una clase?

perdonad mi ignorancia, pero estoy un poco verde todavía!!

muchas gracias
  #2 (permalink)  
Antiguo 21/01/2009, 07:08
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas objetos y clases

Pues igual que en Java tienes que importar lo que vayas a usar.

Es decir, tendrás que hacer un import del módulo donde está coche para luego poder usarlo. Mira la documentación sobre módulos, o el capítulo 3.2 de Dive Into Python.
  #3 (permalink)  
Antiguo 21/01/2009, 08:37
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: problemas objetos y clases

ya, lo que pasa es que en java no hace falta hacer import si estás en el mismo paquete. Aquí hay que ponerlo. pero es que encima, no me ha funcionado poniendo import coche, si no que he tenido que poner

from coche import *

y así me ha empezado a funcionar.

Gracias por el link para la documentación!

un saludo
  #4 (permalink)  
Antiguo 21/01/2009, 09:13
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: problemas objetos y clases

De todas formas, algo no estoy haciendo bien.

Tengo una clase llamada UTM2LatLon (un módulo). Y quiero llamar a esta clase desde otro módulo:

lo pongo tal cual:

CLASE UTM2LatLon

Código:
from math import pi, sin, cos, tan, sqrt

class UTM2LatLon:

    #LatLong- UTM conversion..h
    #definitions for lat/long to UTM and UTM to lat/lng conversions
    #include <string.h>
    
    _deg2rad = pi / 180.0
    _rad2deg = 180.0 / pi
    
    _EquatorialRadius = 2
    _eccentricitySquared = 3
    _ellipsoid = [
    #  id, Ellipsoid name, Equatorial Radius, square of eccentricity    
    # first once is a placeholder only, To allow array indices to match id numbers
    [ -1, "Placeholder", 0, 0],
    [ 1, "Airy", 6377563, 0.00667054],
    [ 2, "Australian National", 6378160, 0.006694542],
    [ 3, "Bessel 1841", 6377397, 0.006674372],
    [ 4, "Bessel 1841 (Nambia] ", 6377484, 0.006674372],
    [ 5, "Clarke 1866", 6378206, 0.006768658],
    [ 6, "Clarke 1880", 6378249, 0.006803511],
    [ 7, "Everest", 6377276, 0.006637847],
    [ 8, "Fischer 1960 (Mercury] ", 6378166, 0.006693422],
    [ 9, "Fischer 1968", 6378150, 0.006693422],
    [ 10, "GRS 1967", 6378160, 0.006694605],
    [ 11, "GRS 1980", 6378137, 0.00669438],
    [ 12, "Helmert 1906", 6378200, 0.006693422],
    [ 13, "Hough", 6378270, 0.00672267],
    [ 14, "International", 6378388, 0.00672267],
    [ 15, "Krassovsky", 6378245, 0.006693422],
    [ 16, "Modified Airy", 6377340, 0.00667054],
    [ 17, "Modified Everest", 6377304, 0.006637847],
    [ 18, "Modified Fischer 1960", 6378155, 0.006693422],
    [ 19, "South American 1969", 6378160, 0.006694542],
    [ 20, "WGS 60", 6378165, 0.006693422],
    [ 21, "WGS 66", 6378145, 0.006694542],
    [ 22, "WGS-72", 6378135, 0.006694318],
    [ 23, "WGS-84", 6378137, 0.00669438]
]
    def _UTMLetterDesignator(Lat):
    #This routine determines the correct UTM letter designator for the given latitude
    #returns 'Z' if latitude is outside the UTM limits of 84N to 80S
    #Written by Chuck Gantz- [email protected]"""
    
        if 84 >= Lat >= 72: return 'X'
        elif 72 > Lat >= 64: return 'W'
        elif 64 > Lat >= 56: return 'V'
        elif 56 > Lat >= 48: return 'U'
        elif 48 > Lat >= 40: return 'T'
        elif 40 > Lat >= 32: return 'S'
        elif 32 > Lat >= 24: return 'R'
        elif 24 > Lat >= 16: return 'Q'
        elif 16 > Lat >= 8: return 'P'
        elif  8 > Lat >= 0: return 'N'
        elif  0 > Lat >= -8: return 'M'
        elif -8> Lat >= -16: return 'L'
        elif -16 > Lat >= -24: return 'K'
        elif -24 > Lat >= -32: return 'J'
        elif -32 > Lat >= -40: return 'H'
        elif -40 > Lat >= -48: return 'G'
        elif -48 > Lat >= -56: return 'F'
        elif -56 > Lat >= -64: return 'E'
        elif -64 > Lat >= -72: return 'D'
        elif -72 > Lat >= -80: return 'C'
        else: return 'Z'    # if the Latitude is outside the UTM limits
    
    
    def UTMtoLL(ReferenceEllipsoid, northing, easting, zone):
        #converts UTM coords to lat/long.  Equations from USGS Bulletin 1532 
        #East Longitudes are positive, West longitudes are negative. 
        #North latitudes are positive, South latitudes are negative
        #Lat and Long are in decimal degrees. 
        #Written by Chuck Gantz- [email protected]
        #Converted to Python by Russ Nelson <[email protected]>"""
    
        k0 = 0.9996
        a = _ellipsoid[ReferenceEllipsoid][_EquatorialRadius]
        eccSquared = _ellipsoid[ReferenceEllipsoid][_eccentricitySquared]
        e1 = (1-sqrt(1-eccSquared))/(1+sqrt(1-eccSquared))
        #NorthernHemisphere; //1 for northern hemispher, 0 for southern
    
        x = easting - 500000.0 #remove 500,000 meter offset for longitude
        y = northing
    
        ZoneLetter = zone[-1]
        ZoneNumber = int(zone[:-1])
        if ZoneLetter >= 'N':
            NorthernHemisphere = 1  # point is in northern hemisphere
        else:
            NorthernHemisphere = 0  # point is in southern hemisphere
            y -= 10000000.0         # remove 10,000,000 meter offset used for southern hemisphere
    
        LongOrigin = (ZoneNumber - 1)*6 - 180 + 3  # +3 puts origin in middle of zone
    
        eccPrimeSquared = (eccSquared)/(1-eccSquared)
    
        M = y / k0
        mu = M/(a*(1-eccSquared/4-3*eccSquared*eccSquared/64-5*eccSquared*eccSquared*eccSquared/256))
    
        phi1Rad = (mu + (3*e1/2-27*e1*e1*e1/32)*sin(2*mu) 
                   + (21*e1*e1/16-55*e1*e1*e1*e1/32)*sin(4*mu)
                   +(151*e1*e1*e1/96)*sin(6*mu))
        phi1 = phi1Rad*_rad2deg;
    
        N1 = a/sqrt(1-eccSquared*sin(phi1Rad)*sin(phi1Rad))
        T1 = tan(phi1Rad)*tan(phi1Rad)
        C1 = eccPrimeSquared*cos(phi1Rad)*cos(phi1Rad)
        R1 = a*(1-eccSquared)/pow(1-eccSquared*sin(phi1Rad)*sin(phi1Rad), 1.5)
        D = x/(N1*k0)
    
        Lat = phi1Rad - (N1*tan(phi1Rad)/R1)*(D*D/2-(5+3*T1+10*C1-4*C1*C1-9*eccPrimeSquared)*D*D*D*D/24
                                              +(61+90*T1+298*C1+45*T1*T1-252*eccPrimeSquared-3*C1*C1)*D*D*D*D*D*D/720)
        Lat = Lat * _rad2deg
    
        Long = (D-(1+2*T1+C1)*D*D*D/6+(5-2*C1+28*T1-3*C1*C1+8*eccPrimeSquared+24*T1*T1)
                *D*D*D*D*D/120)/cos(phi1Rad)
        Long = LongOrigin + Long * _rad2deg
        return (Lat, Long)
y lo llamo desde otra clase así:

Código:
from UTM2LatLon import *

utm=UTM2LatLon()
(lat, lon)=utm.UTMtoLL(23, 579682, 4791031, 30)
print lat
print lon
el error que me da es:

TypeError: UTMtoLL() takes exactly 4 arguments (5 given)

¿A qué se debe?

Gracias
  #5 (permalink)  
Antiguo 21/01/2009, 09:49
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas objetos y clases

Bueno, ese es otro error diferente.

El problema es que no estás declarando el parámetro self en los métodos de tu clase.

e.g. el método UTMtoLL tienes que declararlo así:
Código python:
Ver original
  1. def UTMtoLL(self, ReferenceEllipsoid, northing, easting, zone):

¿Estás siguiendo algún libro/manual/tutorial? Lo pregunto porque probablemente te vendría bien. El libro que comentaba antes, Dive Into Python, lo tienes online de forma gratuita. Es más, o puedes encontrar en español, si lo prefieres así.
  #6 (permalink)  
Antiguo 21/01/2009, 10:05
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: problemas objetos y clases

si, si que lo estoy siguiendo. Lo que pasa es que claro, de los ejemplos sencillitos a estos pues hay un salto.

Ahora he quitado el error anterior, pero me da otro, jejeje (que desesperación!!!)

he metido las primeras líneas dentro de una función __init__ para que sean parámetros de la clase. Dentro del código de esta misma clase se hace referencia a estos parámetros. Pero me dice que no encuentra los atributos:


Cita:
from math import pi, sin, cos, tan, sqrt
class UTM2LatLon:

def __init__(self)

deg2rad = pi / 180.0
rad2deg = 180.0 / pi

EquatorialRadius = 2
eccentricitySquared = 3
ellipsoid = [
# id, Ellipsoid name, Equatorial Radius, square of eccentricity
# first once is a placeholder only, To allow array indices to match id numbers
[ -1, "Placeholder", 0, 0],
[ 1, "Airy", 6377563, 0.00667054],
[ 2, "Australian National", 6378160, 0.006694542],
[ 3, "Bessel 1841", 6377397, 0.006674372],
[ 4, "Bessel 1841 (Nambia] ", 6377484, 0.006674372],
[ 5, "Clarke 1866", 6378206, 0.006768658],
[ 6, "Clarke 1880", 6378249, 0.006803511],
[ 7, "Everest", 6377276, 0.006637847],
[ 8, "Fischer 1960 (Mercury] ", 6378166, 0.006693422],
[ 9, "Fischer 1968", 6378150, 0.006693422],
[ 10, "GRS 1967", 6378160, 0.006694605],
[ 11, "GRS 1980", 6378137, 0.00669438],
[ 12, "Helmert 1906", 6378200, 0.006693422],
[ 13, "Hough", 6378270, 0.00672267],
[ 14, "International", 6378388, 0.00672267],
[ 15, "Krassovsky", 6378245, 0.006693422],
[ 16, "Modified Airy", 6377340, 0.00667054],
[ 17, "Modified Everest", 6377304, 0.006637847],
[ 18, "Modified Fischer 1960", 6378155, 0.006693422],
[ 19, "South American 1969", 6378160, 0.006694542],
[ 20, "WGS 60", 6378165, 0.006693422],
[ 21, "WGS 66", 6378145, 0.006694542],
[ 22, "WGS-72", 6378135, 0.006694318],
[ 23, "WGS-84", 6378137, 0.00669438]
]


def UTMLetterDesignator(Lat):
#This routine determines the correct UTM letter designator for the given latitude
#returns 'Z' if latitude is outside the UTM limits of 84N to 80S

if 84 >= Lat >= 72: return 'X'
elif 72 > Lat >= 64: return 'W'
elif 64 > Lat >= 56: return 'V'
elif 56 > Lat >= 48: return 'U'
elif 48 > Lat >= 40: return 'T'
elif 40 > Lat >= 32: return 'S'
elif 32 > Lat >= 24: return 'R'
elif 24 > Lat >= 16: return 'Q'
elif 16 > Lat >= 8: return 'P'
elif 8 > Lat >= 0: return 'N'
elif 0 > Lat >= -8: return 'M'
elif -8> Lat >= -16: return 'L'
elif -16 > Lat >= -24: return 'K'
elif -24 > Lat >= -32: return 'J'
elif -32 > Lat >= -40: return 'H'
elif -40 > Lat >= -48: return 'G'
elif -48 > Lat >= -56: return 'F'
elif -56 > Lat >= -64: return 'E'
elif -64 > Lat >= -72: return 'D'
elif -72 > Lat >= -80: return 'C'
else: return 'Z' # if the Latitude is outside the UTM limits

def UTMtoLL(self, ReferenceEllipsoid, northing, easting, zone):

#converts UTM coords to lat/long. Equations from USGS Bulletin 1532
#East Longitudes are positive, West longitudes are negative.
#North latitudes are positive, South latitudes are negative
#Lat and Long are in decimal degrees.
#Written by Chuck Gantz- [email protected]
#Converted to Python by Russ Nelson <[email protected]>"""

k0 = 0.9996
a =self.ellipsoid[ReferenceEllipsoid][self.EquatorialRadius]
eccSquared = _ellipsoid[ReferenceEllipsoid][_eccentricitySquared]
e1 = (1-sqrt(1-eccSquared))/(1+sqrt(1-eccSquared))
#NorthernHemisphere; //1 for northern hemispher, 0 for southern

x = easting - 500000.0 #remove 500,000 meter offset for longitude
y = northing

ZoneLetter = zone[-1]
ZoneNumber = int(zone[:-1])
if ZoneLetter >= 'N':
NorthernHemisphere = 1 # point is in northern hemisphere
else:
NorthernHemisphere = 0 # point is in southern hemisphere
y -= 10000000.0 # remove 10,000,000 meter offset used for southern hemisphere

LongOrigin = (ZoneNumber - 1)*6 - 180 + 3 # +3 puts origin in middle of zone

eccPrimeSquared = (eccSquared)/(1-eccSquared)

M = y / k0
mu = M/(a*(1-eccSquared/4-3*eccSquared*eccSquared/64-5*eccSquared*eccSquared*eccSquared/256))

phi1Rad = (mu + (3*e1/2-27*e1*e1*e1/32)*sin(2*mu) + (21*e1*e1/16-55*e1*e1*e1*e1/32)*sin(4*mu) +(151*e1*e1*e1/96)*sin(6*mu))
phi1 = phi1Rad*_rad2deg;

N1 = a/sqrt(1-eccSquared*sin(phi1Rad)*sin(phi1Rad))
T1 = tan(phi1Rad)*tan(phi1Rad)
C1 = eccPrimeSquared*cos(phi1Rad)*cos(phi1Rad)
R1 = a*(1-eccSquared)/pow(1-eccSquared*sin(phi1Rad)*sin(phi1Rad), 1.5)
D = x/(N1*k0)

Lat = phi1Rad - (N1*tan(phi1Rad)/R1)*(D*D/2-(5+3*T1+10*C1-4*C1*C1-9*eccPrimeSquared)*D*D*D*D/24 +(61+90*T1+298*C1+45*T1*T1-252*eccPrimeSquared-3*C1*C1)*D*D*D*D*D*D/720)
Lat = Lat * _rad2deg

Long = (D-(1+2*T1+C1)*D*D*D/6+(5-2*C1+28*T1-3*C1*C1+8*eccPrimeSquared+24*T1*T1)*D*D*D*D*D/120)/cos(phi1Rad)
Long = LongOrigin + Long * _rad2deg
return (Lat, Long)
el error es:

NameError: global name 'ellipsoid' is not defined

si saco los atributos y quito la constructora, al hacer la llamada quito el self, y el error que da es que no existe la variable global ellipsoid.....
  #7 (permalink)  
Antiguo 21/01/2009, 12:17
 
Fecha de Ingreso: julio-2008
Mensajes: 15
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: problemas objetos y clases

Hola no se si te podre ayudar pero creo que lo que pasa es que defines en el metodo __init__ ellipsoide(o algo asi no me acuerdo como se llama) y creo que deberias declararla como self.ellipsoide ,pruebalo y comentas si funciona a ver si te puedo o podemos ayudar,un saludo
  #8 (permalink)  
Antiguo 21/01/2009, 12:30
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: problemas objetos y clases

¿Por qué metes eso en el __init__? Déjalo como estaba. Tan sólo cambia esto (lo he marcado con # AQUÍ):

Código python:
Ver original
  1. from math import pi, sin, cos, tan, sqrt
  2.  
  3. class UTM2LatLon:
  4.  
  5.     #LatLong- UTM conversion..h
  6.     #definitions for lat/long to UTM and UTM to lat/lng conversions
  7.     #include <string.h>
  8.    
  9.     _deg2rad = pi / 180.0
  10.     _rad2deg = 180.0 / pi
  11.    
  12.     _EquatorialRadius = 2
  13.     _eccentricitySquared = 3
  14.     _ellipsoid = [
  15.     #  id, Ellipsoid name, Equatorial Radius, square of eccentricity    
  16.     # first once is a placeholder only, To allow array indices to match id numbers
  17.     [ -1, "Placeholder", 0, 0],
  18.     [ 1, "Airy", 6377563, 0.00667054],
  19.     [ 2, "Australian National", 6378160, 0.006694542],
  20.     [ 3, "Bessel 1841", 6377397, 0.006674372],
  21.     [ 4, "Bessel 1841 (Nambia] ", 6377484, 0.006674372],
  22.     [ 5, "Clarke 1866", 6378206, 0.006768658],
  23.     [ 6, "Clarke 1880", 6378249, 0.006803511],
  24.     [ 7, "Everest", 6377276, 0.006637847],
  25.     [ 8, "Fischer 1960 (Mercury] ", 6378166, 0.006693422],
  26.     [ 9, "Fischer 1968", 6378150, 0.006693422],
  27.     [ 10, "GRS 1967", 6378160, 0.006694605],
  28.     [ 11, "GRS 1980", 6378137, 0.00669438],
  29.     [ 12, "Helmert 1906", 6378200, 0.006693422],
  30.     [ 13, "Hough", 6378270, 0.00672267],
  31.     [ 14, "International", 6378388, 0.00672267],
  32.     [ 15, "Krassovsky", 6378245, 0.006693422],
  33.     [ 16, "Modified Airy", 6377340, 0.00667054],
  34.     [ 17, "Modified Everest", 6377304, 0.006637847],
  35.     [ 18, "Modified Fischer 1960", 6378155, 0.006693422],
  36.     [ 19, "South American 1969", 6378160, 0.006694542],
  37.     [ 20, "WGS 60", 6378165, 0.006693422],
  38.     [ 21, "WGS 66", 6378145, 0.006694542],
  39.     [ 22, "WGS-72", 6378135, 0.006694318],
  40.     [ 23, "WGS-84", 6378137, 0.00669438]
  41. ]
  42.     def _UTMLetterDesignator(Lat):
  43.     #This routine determines the correct UTM letter designator for the given latitude
  44.     #returns 'Z' if latitude is outside the UTM limits of 84N to 80S
  45.     #Written by Chuck Gantz- [email][email protected][/email]"""
  46.    
  47.         if 84 >= Lat >= 72: return 'X'
  48.         elif 72 > Lat >= 64: return 'W'
  49.         elif 64 > Lat >= 56: return 'V'
  50.         elif 56 > Lat >= 48: return 'U'
  51.         elif 48 > Lat >= 40: return 'T'
  52.         elif 40 > Lat >= 32: return 'S'
  53.         elif 32 > Lat >= 24: return 'R'
  54.         elif 24 > Lat >= 16: return 'Q'
  55.         elif 16 > Lat >= 8: return 'P'
  56.         elif  8 > Lat >= 0: return 'N'
  57.         elif  0 > Lat >= -8: return 'M'
  58.         elif -8> Lat >= -16: return 'L'
  59.         elif -16 > Lat >= -24: return 'K'
  60.         elif -24 > Lat >= -32: return 'J'
  61.         elif -32 > Lat >= -40: return 'H'
  62.         elif -40 > Lat >= -48: return 'G'
  63.         elif -48 > Lat >= -56: return 'F'
  64.         elif -56 > Lat >= -64: return 'E'
  65.         elif -64 > Lat >= -72: return 'D'
  66.         elif -72 > Lat >= -80: return 'C'
  67.         else: return 'Z'    # if the Latitude is outside the UTM limits
  68.    
  69.     # AQUÍ
  70.     def UTMtoLL(self, ReferenceEllipsoid, northing, easting, zone):
  71.         #converts UTM coords to lat/long.  Equations from USGS Bulletin 1532
  72.         #East Longitudes are positive, West longitudes are negative.
  73.         #North latitudes are positive, South latitudes are negative
  74.         #Lat and Long are in decimal degrees.
  75.         #Written by Chuck Gantz- [email][email protected][/email]
  76.         #Converted to Python by Russ Nelson <[email protected]>"""
  77.    
  78.         k0 = 0.9996
  79.         # AQUÍ
  80.         a = self._ellipsoid[ReferenceEllipsoid][self._EquatorialRadius]
  81.         eccSquared = self._ellipsoid[ReferenceEllipsoid][self._eccentricitySquared]
  82.         e1 = (1-sqrt(1-eccSquared))/(1+sqrt(1-eccSquared))
  83.         #NorthernHemisphere; //1 for northern hemispher, 0 for southern
  84.    
  85.         x = easting - 500000.0 #remove 500,000 meter offset for longitude
  86.         y = northing
  87.    
  88.         ZoneLetter = zone[-1]
  89.         ZoneNumber = int(zone[:-1])
  90.         if ZoneLetter >= 'N':
  91.             NorthernHemisphere = 1  # point is in northern hemisphere
  92.         else:
  93.             NorthernHemisphere = 0  # point is in southern hemisphere
  94.             y -= 10000000.0         # remove 10,000,000 meter offset used for southern hemisphere
  95.    
  96.         LongOrigin = (ZoneNumber - 1)*6 - 180 + 3  # +3 puts origin in middle of zone
  97.    
  98.         eccPrimeSquared = (eccSquared)/(1-eccSquared)
  99.    
  100.         M = y / k0
  101.         mu = M/(a*(1-eccSquared/4-3*eccSquared*eccSquared/64-5*eccSquared*eccSquared*eccSquared/256))
  102.    
  103.         phi1Rad = (mu + (3*e1/2-27*e1*e1*e1/32)*sin(2*mu)
  104.                    + (21*e1*e1/16-55*e1*e1*e1*e1/32)*sin(4*mu)
  105.                    +(151*e1*e1*e1/96)*sin(6*mu))
  106.         phi1 = phi1Rad*_rad2deg;
  107.    
  108.         N1 = a/sqrt(1-eccSquared*sin(phi1Rad)*sin(phi1Rad))
  109.         T1 = tan(phi1Rad)*tan(phi1Rad)
  110.         C1 = eccPrimeSquared*cos(phi1Rad)*cos(phi1Rad)
  111.         R1 = a*(1-eccSquared)/pow(1-eccSquared*sin(phi1Rad)*sin(phi1Rad), 1.5)
  112.         D = x/(N1*k0)
  113.    
  114.         Lat = phi1Rad - (N1*tan(phi1Rad)/R1)*(D*D/2-(5+3*T1+10*C1-4*C1*C1-9*eccPrimeSquared)*D*D*D*D/24
  115.                                               +(61+90*T1+298*C1+45*T1*T1-252*eccPrimeSquared-3*C1*C1)*D*D*D*D*D*D/720)
  116.         # AQUÍ
  117.         Lat = Lat * self._rad2deg
  118.    
  119.         Long = (D-(1+2*T1+C1)*D*D*D/6+(5-2*C1+28*T1-3*C1*C1+8*eccPrimeSquared+24*T1*T1)
  120.                 *D*D*D*D*D/120)/cos(phi1Rad)
  121.         # AQUÍ
  122.         Long = LongOrigin + Long * self._rad2deg
  123.         return (Lat, Long)

No hace falta meter eso en el __init__. Este código ahora te dará otro error distinto cuando hagas la llamada de antes:

Cuando en la línea 88 intentas hacer ZoneLetter = zone[-1] esto no va a funcionar para el valor 30 que le estás pasando en la llamada en el último parámetro. Pero ahí ya no te puedo ayudar porque no sé lo que significa ese parámetro y lo que estás queriendo hacer. Intuyo que ese método espera que le pases algo como "30N" y no 30, pero no puedo decirte más.
  #9 (permalink)  
Antiguo 28/01/2009, 18:39
 
Fecha de Ingreso: noviembre-2006
Mensajes: 3
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problemas objetos y clases

la respuesta a la primera pregunta es muy sencilla.... no estas usando el objecto que creas, pero como el tipo de objeto se llama igual que el que intentas usar, el error no lo has entendido :P

esto esta mal...
micoche=coche()
coche.arrancar()

...y esto bien
micoche=coche()
micoche.arrancar()

mejor este ejemplo:

ferrari = coche()
ferrari.arrancar()

Un saludo y animo con python!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:49.