2016-04-24 3 views
1

Извините за новичку, но я хочу, чтобы все было ясно для себя. У меня проблема с доступом к переменной класса изнутри вне класса. В коде ниже мне нужно text, text2. Я получаю переменные как кортеж, но я нуждаюсь в них отдельно. Как обновить код, чтобы получить определенную переменную, например text = var1 и text2 = 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() 

Также вам лучше не называть текст переменных и текст2. А также cls является распространенным словом для использования в классе, а в вашем коде cls - это экземпляр, это немного unpythonic :)

+0

Спасибо! Но как сделать его более «питоническим»? :) – Andriy

+0

Сделайте имя что-то значащее. Например, если у вас есть 'class Parser()' then 'parser = Parser()' или 'facebook_parser = FacebookParser (args)'. То же самое касается 'text' и' text2'. Или, по крайней мере, назовите его 'obj' - не' cls' :) – aershov

3

Поскольку вы возвращаете кортеж, вы должны прямо присваивать свои значения переменным за один раз.

Что-то вроде этого:

text, text2 = cls.method_1() 
1

Вместо: text2 = cls.method_1() текста = cls.method_1()

сделать: text2, текст = cls.method_1()

Смежные вопросы