diccionario como variable de clase [Python]

Iniciado por Phillip357, 18 Noviembre 2016, 12:03 PM

0 Miembros y 1 Visitante están viendo este tema.

Phillip357

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:

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?

Once

#1
Sí es posible, y el código está casi bien, solo tienes que inicializar bien la variable verbs:

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


Saludos!

Phillip357

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

Once

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 (python) [Seleccionar]
# -*- coding: utf-8 -*-

class Hola(object):
   
    def unMetodo(self):
        print("Hola, soy un metodo")

a = "un"
b = "Metodo"

instancia = Hola()
metodo = getattr(instancia, a + b)
metodo()


Saludos!

eduardoemen

# 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

tincopasan

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)

Phillip357

Cita de: 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 (python) [Seleccionar]
# -*- coding: utf-8 -*-

class Hola(object):
   
    def unMetodo(self):
        print("Hola, soy un metodo")

a = "un"
b = "Metodo"

instancia = Hola()
metodo = getattr(instancia, a + b)
metodo()


Saludos!

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