Запрос переменной класса в python - PullRequest
0 голосов
/ 27 мая 2019

Framework: Робот, Язык: 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]

Я мог бы печатать все значения аргументов, пока выполнение остается в модуле. Если я хотел вызвать те же значения из другого модуля, он ничего не возвращает, так как значения удаляются из памяти. Так как переменные класса по умолчанию являются статическими в 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

1 Ответ

1 голос
/ 27 мая 2019

Если вам нужно значение типа singleton, измените код так, чтобы он выглядел следующим образом.

class Runner():
    args = []

    def argument_reader(self):
        Runner.args = list(sys.argv)

    def login(self):
        return Runner.args[1], Runner.args[2]

В противном случае вам придется вызывать аргумент arguments_reader () для каждого экземпляра.

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