框架:机器人,语言: 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
答案 0 :(得分:1)
如果要使用单例类型的值,请将代码更改为如下形式。
class Runner():
args = []
def argument_reader(self):
Runner.args = list(sys.argv)
def login(self):
return Runner.args[1], Runner.args[2]
否则,您必须在每个实例上调用arguments_reader()。