Делить переменные между методами одного класса - PullRequest
1 голос
/ 12 марта 2020

Я пытался поделиться переменной, которая локально объявлена ​​в одном из методов того же класса:

class test:

    def __init__ (self,a,b):

         self.a=a
         self.b=b

    def x(inputList):

         container = [test(x[0],x[1]) for x in inputList]

         for i in range (0,2):
               print("\n")
               print(container[i].a)
               print(container[i].b)

Рассмотрим:

xyz=[["abc","cde"],["fgh","ijk"],["lmn","opq"]]

Я запускаю:

test.x(xyz)

И результат:

abc
cde


fgh
ijk


lmn
opq

Что я и ожидал (список «контейнер» содержит объекты из класса «тест»). Однако я хотел бы получить доступ к значениям «контейнера» в другом методе класса «test», например:

def y():

    rst=container[2].a

    print(rst)

И я получаю сообщение об ошибке:

NameError: name 'container' is not defined

Есть ли какое-нибудь решение этой проблемы? Может быть, какое-то наследование для методов ...

Я пытался использовать следующее:

проверка класса:

def __init__ (self,a,b,container):

    self.a=a
    self.b=b
    self.container=container

def x(inputList):

    container = [test(x[0],x[1]) for x in inputList]

    for i in range (0,3):
        print("\n")
        print(self.container[i].a)
        print(self.container[i].b)

Однако, когда я пытаюсь запустить:

test.x(xyz)

Я получаю:

TypeError: __init__() missing 1 required positional argument: 'container'

Я понимаю, что мне придется изменить отрывок:

container = [**test(x[0],x[1]**) for x in inputList]

Есть какие-нибудь догадки на этот счет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...