Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Phillip357 en 18 Noviembre 2016, 12:03 pm



Título: diccionario como variable de clase [Python]
Publicado por: Phillip357 en 18 Noviembre 2016, 12:03 pm
Buenas, me gustaría establecer un diccionario como variable de clase para que desde otra clase pueda ser llamado sin ningún tipo de problema, mi intención es algo como:

Código:
class Dicctionary:
    verbs
    def setVerbs(self, fileDictionary):
        print("setVerbs: ",fileDictionary)
        Dicctionary.verbs = {fileDictionary[i]: fileDictionary[i+1] for i in range(0, len(fileDictionary), 2)}
        Dicctionary.getKeys(self,verbs)

¿Es posible hacer algo asi?


Título: Re: diccionario como variable de clase [Python]
Publicado por: Once en 18 Noviembre 2016, 12:22 pm
Sí es posible, y el código está casi bien, solo tienes que inicializar bien la variable verbs:

Código
  1. class Dicctionary:
  2.    verbs = dict()
  3.    def setVerbs(self, fileDictionary):
  4.        print("setVerbs: ",fileDictionary)
  5.        self.verbs = {fileDictionary[i]: fileDictionary[i+1] for i in range(0, len(fileDictionary), 2)}
  6.        self.getKeys(self,verbs)

Saludos!


Título: Re: diccionario como variable de clase [Python]
Publicado por: Phillip357 en 18 Noviembre 2016, 12:59 pm
Gracias Once, me has resuleto el problema!

Aprovecho el mismo post (para no llenar el foro) para preguntar otra cosa diferente:
Tengo un método dentro de otra clase (Dictionaries) con un método (verbsSet) y me gustaría llamarlo de forma dinámica, es decir, hacer algo parecido a esto:

fileToRead = 'verbs'
calling = fileToRead+"Set()"
Dicctionary.calling


Título: Re: diccionario como variable de clase [Python]
Publicado por: Once en 18 Noviembre 2016, 22:19 pm
Hola, puedes hacerlo, solo tienes que hacer uso de la función getattr. Te dejo un pequeño ejemplo de cómo se usa:

Código
  1. # -*- coding: utf-8 -*-
  2.  
  3. class Hola(object):
  4.  
  5.    def unMetodo(self):
  6.        print("Hola, soy un metodo")
  7.  
  8. a = "un"
  9. b = "Metodo"
  10.  
  11. instancia = Hola()
  12. metodo = getattr(instancia, a + b)
  13. metodo()

Saludos!


Título: Re: diccionario como variable de clase [Python]
Publicado por: eduardoemen en 19 Noviembre 2016, 15:50 pm
# Open the input text file.
f = open('problem001.txt', 'r')
 
myDictionary = {}
 
# First line contains the string Text
genome = f.readline().rstrip('\n')
# Second line contains k
k = int(f.readline().rstrip('\n'))
 
f.close()
         
# Number of characters in the string
numChars = len(genome)
 
# Step through the string 1 char at a time and substring out each k characters
for i in range (0, numChars - k + 1):
    kmer = genome[i:i+k]
    if kmer in myDictionary:
        myDictionary[kmer] += 1
    else:
        myDictionary[kmer] = 1
 
maxValue = 0
answer = ''
# Sort the keys in the dictionary
for w in sorted(myDictionary, key=myDictionary.get, reverse=True):
    if myDictionary[w] >= maxValue:
        maxValue = myDictionary[w]
        answer += w + ' '
        print w, myDictionary[w]
 
print 'answer'
print answer


Hola a todos un saludo, perdonad si este tema tan de principiante lo haya colado por aquí, alguien podría ayudarme por favor que no logro encontrar qué significa :

 kmer = genome[i:i+k] 


esos dos puntos entre i e i y dentrp de un corchete


gracias de antemano si alguien puede ayudarme con eso

un saludo


Título: Re: diccionario como variable de clase [Python]
Publicado por: tincopasan en 19 Noviembre 2016, 19:55 pm
Tendrías que haber abierto un nuevo post con esta pregunta.
Ahora, basicamente está haciendo un slicing(cortando) una cadena por ejemplo:
cadena= "hola mundo"
cortar = cadena[1:3]
==> ol, ya que el primer valor es el lugar de inicio del corte y el segundo el lugar de final(no incluido)


Título: Re: diccionario como variable de clase [Python]
Publicado por: Phillip357 en 23 Noviembre 2016, 09:38 am
Hola, puedes hacerlo, solo tienes que hacer uso de la función getattr. Te dejo un pequeño ejemplo de cómo se usa:

Código
  1. # -*- coding: utf-8 -*-
  2.  
  3. class Hola(object):
  4.  
  5.    def unMetodo(self):
  6.        print("Hola, soy un metodo")
  7.  
  8. a = "un"
  9. b = "Metodo"
  10.  
  11. instancia = Hola()
  12. metodo = getattr(instancia, a + b)
  13. metodo()

Saludos!

Perfecto, eso hace exactamente lo que quería, gracias!!