Я пытался поделиться переменной, которая локально объявлена в одном из методов того же класса:
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]
Есть какие-нибудь догадки на этот счет?