python中的类变量查询

时间:2019-05-27 13:10:25

标签: python robotframework

框架:机器人,语言: 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

1 个答案:

答案 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()。