Фреймворк: Робот, Язык: Python-3.7.1 Уровень: Новичок
У меня есть переменная args=[], определенная на уровне класса. Значения переменных назначаются из командной строки с использованием модуля «sys».
import sys
class Runner():
args = []
def argument_reader(self):
self.args = list(sys.argv)
def login(self):
return self.args[1], self.args[2]
Я мог бы напечатать все значения args, пока выполнение остается внутри модуля. Если бы я хотел вызвать те же значения из другого модуля, он ничего не возвращает, поскольку значения удаляются из памяти. Поскольку переменные класса по умолчанию являются статическими в python, почему система не СОХРАНЯЕТ значения?
cmd line>>py Runner.py testing test@123
Например:
Calling method from same class:-
run = Runner()
run.argument_reader()
print(run.login())
Output>>> testing, testing@123
Calling the same method from another class:-
runn = Runner.Runner()
print(runn.login())
output>> IndexError: list index out of range
Если вам нужно значение одноэлементного типа, измените свой код, чтобы он выглядел следующим образом.
class Runner():
args = []
def argument_reader(self):
Runner.args = list(sys.argv)
def login(self):
return Runner.args[1], Runner.args[2]
В противном случае вам придется вызывать arguments_reader() для каждого экземпляра.
ОЙ. Да, если вам нужна переменная класса вместо переменной экземпляра, используйте Runner.args, а не run.args (вероятно).
Дальнейший вызов метода «argument_reader()» не будет иметь командной строки для передачи данных, верно?