[英]How to access a variable from a class of another module
我是一名Python初学者,我在要从另一个脚本访问的commandline_reader.py文件类中创建了一个变量。 我试图通过将变量设置为全局变量来做到这一点,但这是行不通的。
myscript.py:
from commandline_reader import Commandline_Reader
reader = Commandline_Reader('--get_serial_number')
reader.run()
print output
commandline_reader.py:
class Commandline_Reader:
def __init__(self,argString=''):
global output
output = []
def run(self):
# do stuff
a = 'somevariable'
output.append(a)
当我运行myscript.py时,总是出现NameError:未定义名称“输出”。 我读到这是因为全局变量仅在模块内定义。 如何在脚本中正确访问输出变量?
使output
成为实例属性:
class Commandline_Reader:
def __init__(self,argString=''):
self.output = [] # note use of self here
def run(self):
# do stuff
a = 'somevariable'
self.output.append(a) # and here
通过实例访问它:
print reader.output
哎哟。 进行面向对象编程的全部原因是为了避免使用全局变量。 使它们成为实例变量以在类中的任何位置访问它们。
class Commandline_Reader:
def __init__(self,argString=''):
self.output = []
def run(self):
# do stuff
a = 'somevariable'
self.output.append(a) #output is now part of the instance Commandline reader and can be accessed anywhere inside the class.
clr = Commandline_Reader(argstring='--get_serial_number')
clr.run()
print clr.output
>>>['somevariable']
也许class属性更适合您?
class Commandline_Reader:
output = []
def run(self):
# do stuff
a = 'somevariable'
self.output.append(a)
只需从run()方法返回值
myscript.py:
from commandline_reader import Commandline_Reader
reader = Commandline_Reader('--get_serial_number')
output = reader.run()
print output
commandline_reader.py:
class Commandline_Reader:
def __init__(self,argString=''):
self.output = []
def run(self):
# do stuff
a = 'somevariable'
self.output.append(a)
return self.output
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.