[英]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.