2016-04-24 2 views
1

Entschuldigung für Neuling Frage, aber ich möchte für mich selbst klar machen. Ich habe ein Problem beim Zugriff auf die Klassenvariable innerhalb der Funktion außerhalb der Klasse. Im folgenden Code brauche ich text, text2. Ich bekomme Variablen als Tupel, aber ich brauche sie getrennt. Wie man Code aktualisiert, um definierte Variable zu erhalten wie text = var1 und text2 = var2? Danke im Voraus!Beziehen Sie sich auf definierte Variable von Funktion außerhalb Python-Klasse

from django.shortcuts import render 

class Someclass(): 
    def method_1(self): 
     self.var2 = 'var2' 
     self.var1 = 'var1' 
     return self.var1 ,self.var2 

def func(request): 
    cls = Someclass() 
    text2 = cls.method_1() 
    text = cls.method_1() 
    content = { 
     'text': text, 
     'text2': text2, 
    } 
    return render(request, "web/page.html", content) 
+0

Danke für die Bearbeitung und bitte fragen, wie man Text mit grauem Hintergrund hervorhebt? – Andriy

Antwort

2

Verwendung tuple unpacking - Sie können mehrere Ergebnisse angezeigt, und mehrere Ergebnisse aus einer func erhalten

text, text2 = cls.method_1() 

Auch besser benennen Sie nicht Ihre Variablen text und text2. Und auch cls ist ein allgemeines Wort für eine Klasse zu verwenden, und in Ihrem Code cls ist eine Instanz, die ein bisschen unpythonisch ist :)

+0

Danke! Aber wie macht man es pythisch? :) – Andriy

+0

Machen Sie den Namen etwas gemein. Wenn Sie 'class Parser()' dann 'parser = Parser()' oder 'facebook_parser = FacebookParser (args)' haben. Dasselbe gilt für 'text' und' text2'. Oder nennen Sie es zumindest 'obj' - nicht' cls' :) – aershov

3

Da Sie ein Tupel zurückgeben sollten Sie direkt ihre Werte an Variablen in einem einzigen Anruf zuweisen.

Etwas wie folgt aus:

text, text2 = cls.method_1() 
1

Statt: text2 = cls.method_1() text = cls.method_1()

tun: text2, text = cls.method_1()

Verwandte Themen