2016-04-24 73 views
1

對於新手問題很抱歉,但我想讓自己清楚明白。我在類之外的函數內部訪問類變量時遇到問題。在下面的代碼中,我需要text, text2。我得到變量作爲元組,但我需要分開。如何更新代碼以獲得定義的變量,如text = var1text2 = var2?提前致謝!請參閱從Python類以外的函數定義的變量

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

感謝編輯,請問如何指出灰色背景的文字? – Andriy

回答

2

使用tuple unpacking - 你可以返回一些結果,並從FUNC收到幾個結果

text, text2 = cls.method_1() 

此外,你最好不要命名你的變量文本和text2。而且cls是一個常用的詞,用於一個類,在你的代碼cls是一個實例,這有點unpythonic :)

+0

謝謝!但如何讓它更「pythonic」? :) – Andriy

+0

使名稱的意思。如果你有'Parser()'類,那麼'parser = Parser()'或'facebook_parser = FacebookParser(args)'。 'text'和'text2'也一樣。或者至少將其命名爲'obj' - 而不是'cls' :) – aershov

3

既然你正在返回一個元組,你應該直接在一次調用中將它們的值賦值給變量。

事情是這樣的:

text, text2 = cls.method_1() 
1

相反的: 文本2 = cls.method_1() 文本= cls.method_1()

做: 文本2,文本= cls.method_1()