Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Python
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-04-2011
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Gracias D-MO, sin duda será interesante ver cómo se redefine (para lo que en Delphi se usa "Override") un método.
Por nada Al, para eso estamos .

Por cierto, cuando escribí el post de arriba estaba por salir de la oficina y en mi afán de responder a tu pregunta olvidé que sería un error devolver -1 como posición en una lista en Python, puesto que el -1 es utilizado para hacer referencia a los elementos en la lista en orden inverso, así -1 es el último, -2 el penúltimo, etc... Lo correcto sería devolver None para indicar la ausencia del elemento en la lista.

Así, si tenemos:
Código:
x = ['a','b','c']
y decimos
Código:
print x[-1]
obtenemos
Código:
c
La clase myList entonces debería quedar:
Código:
class myList(list):
    
    def indexOf(self, value):
        try:
            return self.index(value)
        except ValueError:
            return None
Saludos
Responder Con Cita
  #2  
Antiguo 02-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¡¡¡Que extraño!!!, ¿no?
Responder Con Cita
  #3  
Antiguo 02-04-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¡¡¡Que extraño!!!, ¿no?
Para los que estamos acostumbrados a la carcelaria libertad de las llaves o del begin y end, sí.
Responder Con Cita
  #4  
Antiguo 02-04-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por D-MO Ver Mensaje
La clase myList entonces debería quedar:
Código:
class myList(list):
    
    def indexOf(self, value):
        try:
            return self.index(value)
        except ValueError:
            return None
Saludos
Quiero pensar que, como en Delphi sería menos costoso evitar la excepción:

Código:
def IndexOf (self, Value):
  if Value in self:
    return self.index (Value)
  else:
    return None
¿Voy bien?

Interesante también lo referente a uso de self: http://es.wikipedia.org/wiki/Python#Clases
Responder Con Cita
  #5  
Antiguo 02-04-2011
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¡¡¡Que extraño!!!, ¿no?
Un poco casi, un poco

Cita:
Empezado por Al González Ver Mensaje
Código:
def IndexOf (self, Value):
  if Value in self:
    return self.index (Value)
  else:
    return None
¿Voy bien?
Pues Al, el código es funcional, pero, ¿para que evadir el try?
Responder Con Cita
  #6  
Antiguo 02-04-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por D-MO Ver Mensaje
Pues Al, el código es funcional, pero, ¿para que evadir el try?
Pues para:

1. Hacer más ágil la ejecución. Dudo mucho que el mecanismo de elevar y atrapar una excepción, en cualquier lenguaje, sea más rápido y ligero que preguntar antes de intentar.

2. Hacer más legible el código. Como lo he puesto me parece queda más claro.

3. Evitar asunciones. Como lo has puesto das por sentado que si se eleva una excepción es porque el elemento no existe en la lista (¿y si sucede por otro motivo?).

Es mi punto de vista al respecto.
Responder Con Cita
  #7  
Antiguo 02-04-2011
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
...Es mi punto de vista al respecto.
Los tres puntos que indicas me parecen aceptables, en la medida de lo posible los iré aplicando. Todos los días se aprende algo nuevo.

Saludos.
Responder Con Cita
  #8  
Antiguo 02-04-2011
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
En efecto, tienes la razón en el primer punto, explico:
Teniendo las dos opciones, a y b en los archivos a.py y b.py de la siguiente manera:

a.py
Código:
class myList(list):
    
    def indexOf(self, value):
        try:
            return self.index(value)
        except ValueError:
            return None

x = myList()

print 'A:', x.indexOf('test')
b.py
Código:
class myList(list):
    
    def indexOf(self, value):
        if value in self:
            return self.index(value)
        else:
            return None

x = myList()

print 'B:', x.indexOf('test')
Se obtiene como resultado lo siguiente:

Código:
~/tmp$ time python a.py
A: None

real	0m0.046s
user	0m0.028s
sys	0m0.000s

~/tmp$ time python b.py
B: None

real	0m0.033s
user	0m0.024s
sys	0m0.000s
Gracias por el aporte

Saludos.
Responder Con Cita
  #9  
Antiguo 02-04-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por D-MO Ver Mensaje
sería un error devolver -1 como posición en una lista en Python, puesto que el -1 es utilizado para hacer referencia a los elementos en la lista en orden inverso, así -1 es el último, -2 el penúltimo, etc...
En algún momento, hice un pequeño e incompleto resumen del usos de listas para no confundirme con el acceso por índices. Lo adjunto aquí por si sirve de algo.

// Saludos
Archivos Adjuntos
Tipo de Archivo: zip python.listas.zip (908 Bytes, 6 visitas)
Responder Con Cita
  #10  
Antiguo 02-04-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Podeis encontrar más información en

http://mundogeek.net/tutorial-python/

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como sabes la IP del cliente con idTCPServer fide_uci Internet 1 13-11-2009 06:40:12
Tutorial de Python 'Python para todos' marcoszorrilla Noticias 11 15-02-2009 05:19:15
Si no sabes leer, éste es tu post... Gabo Humor 4 06-06-2008 00:15:27
20 cosas que no sabes sobre Google marcoszorrilla La Taberna 6 05-06-2008 20:30:35
¿Qué Tanto Sabes De La Vasectomía? gmontes Humor 4 10-12-2005 09:15:05


La franja horaria es GMT +2. Ahora son las 11:39:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi