2017-01-07 4 views
0

Hallo, ich habe folgendes Wörterbuch, mit Tasten und frecuencies:Wie importiere ich die folgende Funktion?

dictFrec = {'22': 21, '25': 9, '47': 21, '1': 22, '28': 20, '21': 12, '10': 136, '12': 106, '17': 20, '19': 39, '33': 89, '31': 40, '48': 52, '30': 37, '37': 18, '41': 114, '36': 49, '42': 30, '7': 22, '8': 29, '18': 22, '4': 18, '14': 49, '38': 16, '34': 37, '6': 11, '2': 19, '44': 16, '35': 69, '26': 52, '39': 30, '27': 16, '40': 24, '0': 31, '3': 21, '32': 71, '5': 17, '23': 27, '24': 36, '20': 26, '46': 19, '11': 28, '29': 50, '13': 19, '9': 101, '49': 44, '15': 23, '43': 17, '45': 37, '16': 72} 

Ich bestelle 5 niedrigsten Werte erhalten ich in einer Klasse die folgende Funktion entworfen:

import operator 

class getStrange: 

    def getStrangeD(my_dict): 
     strange=dict(sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)[:5]) 
     return strange 

Das Problem kommt, wenn ich versucht, es zu importieren wie folgt:

from tools import getStrange as G 
newA = G.getStrangeD(dictFrec) 

ich habe:

Traceback (most recent call last): 
    File "parser.py", line 55, in <module> 
    newA = G.getStrangeD(dictFrec) 
AttributeError: module 'tools.getStrange' has no attribute 'getStrangeD' 

So würde ich gerne Unterstützung erhalten, ich versuche, diese Funktion zu haben, um meinen Code sauberer zu machen, aber ich bin mir nicht sicher, wie man diese Funktion importiert und wo das Problem ist, danke für die Unterstützung,

diese neue Klasse wurde in einer Datei gespeichert, wie folgt:

/tools$ ls 
getStrange.py __pycache__ 
+0

Ich bin mir nicht sicher, warum Sie eine Klasse verwenden. Dein Code würde sonst gut funktionieren; Sie scheinen vielleicht ein anderes Tool-Modul zu importieren? Suchen Sie nach dem Dateinamen ('import tools; print (tools.__ file __)'). Eine andere Möglichkeit besteht darin, dass Sie Ihr Skript nicht neu gestartet haben und Python weiterhin eine vorherige Version des Codes verwendet. –

+0

Wie lautet der Name dieser Datei? Ist es 'tools.py' oder vielleicht seine' tools/getStrange.py'? – tdelaney

+0

@tdelaney Ich habe die Informationen in der Frage hinzugefügt – neo33

Antwort

1

Sie zwei Probleme haben. Zuerst wird getStrangeD als Instanzmethode geschrieben, enthält jedoch keine self Variable. Da keine Instanzdaten verwendet werden, können Sie sie stattdessen als statische Methode definieren. Zweitens, da es ein Mitglied der Klasse ist, müssen Sie den Klassennamen angeben, wenn Sie darauf zugreifen.

Werkzeuge/getStrange.py

import operator 

class getStrange: 

    @staticmethod 
    def getStrangeD(my_dict): 
     strange=dict(sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)[:5]) 
     return strange 

Nun, es zu benutzen

>>> from tools import getStrange as G 
>>> dictFrec = {'22': 21, '25': 9} # .... 
>>> newA = G.getStrange.getStrangeD(dictFrec) 
+0

Danke Ich schätze wirklich die Unterstützung, das war wirklich hilfreich – neo33

Verwandte Themen