elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python]Problema al ejecutar metodo principal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python]Problema al ejecutar metodo principal  (Leído 5,700 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
[Python]Problema al ejecutar metodo principal
« en: 9 Septiembre 2010, 22:51 pm »

Muy buenas noches a todos!
He estado codeando un pequeño ejercicio que se me ocurrió en Python y he decidido hacerlo con clases y orientado a objetos, el problema es que no soy capaz de llamar al metodo main(), os muestro el codigo que llevo hecho:

Código
  1. '''
  2. Created on Sep 9, 2010
  3.  
  4. @author: Debci
  5. '''
  6. # -*- coding: utf-8 -*-
  7. class Matrizes:
  8.   #Nuestra querida matriz
  9.   matriz = []
  10.   def __init__(self):
  11.       self.main()
  12.   def main(self):
  13.        while True:
  14.            print "###### Manejo dinamico de matrizes ######\n\n"
  15.            print "1-Insertar valores a la matriz"
  16.            print "2-Examinar un elemento"
  17.            print "3-Borrar un elemento"
  18.            print "4-Modifica un elemento situado en un indice"
  19.            print "5-Visualizar la matriz completa"
  20.            print "6-Salir de esta aplicacion"
  21.            indiceLeido = raw_input("Introduce tu opcion:")
  22.            indiceLeido = int(indiceLeido)
  23.            Matrizes.opcion(indiceLeido)
  24.  
  25.  
  26.   def opcion(self,indice):
  27.  
  28.        #Comprobamos que indice es el introducido
  29.        if indice == 1:
  30.            numeroValores = raw_input("Cuantos valores desea introducir?\n")
  31.            numeroValores = int(numeroValores)
  32.            for i in range(numeroValores):
  33.                valor = raw_input("Introduzca el valor asignado al indice " + str(i) + ":")
  34.                valor = int(valor)
  35.  
  36.                Matrizes.matriz[i] = valor
  37.        elif indice == 5:
  38.            for j in Matrizes.matriz:
  39.                print j
  40. if __name__ == "__main__":
  41.        Matrizes.main()

Y al ejecutar el interprete me devuelve el siguiente error:
Citar
Traceback (most recent call last):
  File "/home/debci/workspace/Tester/src/main.py", line 41, in <module>
    Matrizes.main(super)
TypeError: unbound method main() must be called with Matrizes instance as first argument (got type instance instead)

Que ocurre? No estoy seguro pero me daba como error que habia que indicar self como primer parametro, pero no acabo de ver porque falla...

Un saludo y gracias desde ya.


« Última modificación: 9 Septiembre 2010, 22:53 pm por Debci » En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: [Python]Problema al ejecutar metodo principal
« Respuesta #1 en: 9 Septiembre 2010, 23:07 pm »

Matrizes tienes que instanciarla y no usarla tal cual:

var=Matrizes();

otra cosa, dentro de la clase usa self.


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python]Problema al ejecutar metodo principal
« Respuesta #2 en: 10 Septiembre 2010, 02:51 am »

Desde la clase no debes de llamar a la propia clase, sino que solo debes de llamar a las funciones. Con esto me refiero a que llames a las funciones por NombreFuncion(parametros), y no por NombreClase.NombreFuncion(parametros)

Saludos

En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: [Python]Problema al ejecutar metodo principal
« Respuesta #3 en: 10 Septiembre 2010, 17:15 pm »

Aqui os dejo el source con todo solucionado, para el que le interese:
Código
  1. '''
  2. Created on Sep 9, 2010
  3.  
  4. @author: Debci
  5. '''
  6. # -*- coding: utf-8 -*-
  7. import os, sys
  8.  
  9.  
  10.  
  11. class Matrizes:
  12.   #Nuestra querida matriz
  13.   matriz = []
  14.   def __init__(self):
  15.       self.main()
  16.   def main(self):
  17.        while True:
  18.  
  19.            #Empieza el muestreo del menu
  20.            print "###### Manejo dinamico de matrizes ######\n\n"
  21.            print "1-Insertar valores a la matriz"
  22.            print "2-Examinar un elemento"
  23.            print "3-Borrar un elemento"
  24.            print "4-Modifica un elemento situado en un indice"
  25.            print "5-Visualizar la matriz completa"
  26.            print "6-Salir de esta aplicacion"
  27.            indiceLeido = raw_input("Introduce tu opcion:\n")
  28.            indiceLeido = int(indiceLeido)
  29.            self.opcion(indiceLeido)
  30.            #Limpiamos la pantalla
  31.            #self.clearShell()
  32.  
  33.   def opcion(self,indice):
  34.        matrizRelativa = []
  35.        #Opcion 1
  36.        if indice == 1:
  37.            numeroValores = raw_input("Cuantos valores desea introducir?\n")
  38.            numeroValores = int(numeroValores)
  39.  
  40.            for i in range(numeroValores):
  41.                valor = raw_input("Introduzca el valor asignado al indice " + str(i) + ":\n")
  42.                valor = int(valor)
  43.                matrizRelativa.insert(i,valor)
  44.            self.matriz = matrizRelativa
  45.  
  46.        #Opcion 2
  47.        elif indice == 2:
  48.            elemento = raw_input("Introduce el indice del objeto a analizar:")
  49.            elemento = int(elemento)
  50.            print self.matriz[elemento]
  51.  
  52.        #Opcion 5
  53.        elif indice == 5:
  54.            for j in self.matriz:
  55.                print j
  56.  
  57.   def clearShell(self):
  58.       os.system("clear")
  59.  
  60. if __name__ == "__main__":
  61.    matrizes = Matrizes()
  62.    matrizes.main()




Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Encpsular Objeto para ejecutar por hilo principal
.NET (C#, VB.NET, ASP)
Lopardo 7 5,206 Último mensaje 23 Mayo 2011, 02:53 am
por Lopardo
PROBLEMA AL EJECUTAR UN PROGRAMA PYTHON UTILIZANDO (PHP) SHELL_EXEC
Scripting
Andrew98 1 3,251 Último mensaje 3 Mayo 2013, 09:39 am
por adastra
Duda python método optimización levenberg marquardt
Programación General
Quini sb 2 2,765 Último mensaje 5 Septiembre 2016, 11:44 am
por Quini sb
[PYTHON]Ejecutar Python en otros equipos.
Scripting
dimineko 3 2,190 Último mensaje 21 Octubre 2018, 22:40 pm
por huchoko
Método __init__ y clases de python-3.x
Programación General
Jedahee 3 2,937 Último mensaje 18 Noviembre 2019, 19:35 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines