Как сделать глобальный класс var в методе класса - PullRequest
0 голосов
/ 18 мая 2018

Я хочу сделать global instance из class 'test', если условие выполнено.

Я просто написал код интуитивно, что не работает.Как я могу это исправить?

class test:
    def __init__(self, a=0, b=0):
        self.a = a
        self.b = b

    def set_glob(self, check):
        if check:
            temp = test(1,1)
            global r1 = temp  ##<- syntax error at " = "
            global r2 = self  ##<- syntax error at " = "

    a=test(1,2)
    a.set_glob(True)

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Две вещи. Вам нужно объявить глобалы в отдельной строке. Затем вам нужно беспокоиться о том, когда test в качестве имени переменной появляется ... после завершения определения класса.

class test:
    def __init__(self, a=0, b=0):
        self.a = a
        self.b = b

    def set_glob(self, check):
        if check:
            temp = test(1,1)
            global r1
            global r2
            r1 = temp
            r2 = self

a=test(1,2)
a.set_glob(True)
0 голосов
/ 18 мая 2018
class test:
def __init__(self, a=0, b=0):
    self.a = a
    self.b = b

def set_glob(self, check):
    if check:
        temp = test(1,1)
        global r1 
        r1 = temp 
        global r2 
        r2 = self  

a=test(1,2)
a.set_glob(True)

Объяснение:

Сначала необходимо указать, что вы обращаетесь к глобальным переменным r1 и r2 с помощью global r1 и global r2, а затем назначить / обновить эти переменные с помощью r1 = temp и r2 = self

0 голосов
/ 18 мая 2018

Попробуйте следующее:

global r1
r1 = temp
global r2
r2 = self

IIRC, когда вы объявляете global x, вы заявляете, что для остальной части вашей области действия вы планируете работать с x какглобальная переменная.

...