Was Könnte die Ursache Python-Fehler 'str' object does not support item assignment

Ich versuche zu Debuggen, einige Python-2.7.3-code, um eine Schleife durch eine Liste der Elemente, und konvertieren jeweils einen string:

req_appliances = ['9087000CD', 'Olympus', 185]
for i in range(0, len(req_appliances)):
    req_appliances[i] = str(req_appliances[i])
print req_appliances

Die Ausgabe ist wie folgt:

['9087000CD', 'Olympus', '185']

Im obigen Beispiel habe ich den Wert des req_appliances ausdrücklich zum testen der Schleife. Im tatsächlichen code, req_appliances ist ein argument für eine Funktion. Ich weiß nicht, den Typ des Arguments zur Laufzeit, aber es erscheint eine Liste von skalaren Werten. Ich weiß, dass ich beim aufrufen der Funktion, sehe ich die folgende Fehlermeldung:

File ".../database.py", line 8277, in get_report_appliance_list
    req_appliances[i] = str(req_appliances[i])
TypeError: 'str' object does not support item assignment

Ich versuche ableiten, für welche Werte von argument req_appliances es wäre möglich, dass dieser Fehler entstehen. Es scheint mir, dass alle Werte sind Skalare, und jeder (auch wenn unveränderbar) sollte eine gültige LS-Ausdrücke, die in einen Auftrag. Gibt es etwas, was fehlt mir hier? Hier ist der code, der im Kontext, in der Funktion in der Sie definiert ist:

def get_report_appliance_list(self, req_appliances, filter_type=None):

    appliances = {}
    appliance_list = []

    if filter_type != None:
        if filter_type not in ('appliances', 'servers'):
            raise ValueError("appliance filter_type must be one of 'appliances' or 'servers'")

    active_con = self.get_con()
    if active_con is None:
        raise Exception('No database connections are available.')
    con = None

    in_expr_items = ''
    if req_appliances != None:
        # Create a string like '(%s, %s, ...)' to represent
        # the 'in' expression items in the SQL.
        print(req_appliances)
        for i in range(0, len(req_appliances)):
            req_appliances[i] = str(req_appliances[i])
            in_expr_items += '%s,'
        in_expr_items = '(' + in_expr_items[:-1] + ') '
  • Ich vermute, dass die req_applieances, dass die Ursachen dieser ist eine Zeichenfolge, die Sie erwartet eine Liste, aber in diesem Fall ist es ein string. Finden Sie die betreffende Zeile
  • Ich nehme an, du bist die übergabe eines tatsächlichen string... Ohne zu sehen, Ihre Funktion, Definition (und die Argumente), ist es schwer zu sagen, aber es kann sein, Sie wollen variable Argumente def your_func(*req_appliances) zum Beispiel...
Schreibe einen Kommentar