Python 在多个方法中定义一个属性 class
Python defining an attribute in many methods within one class
我创建了两个 类:一个用于解析命令行参数,另一个用于从停用词文件中获取停用词:
import getopt, sys, re
class CommandLine:
def __init__(self):
opts, args = getopt.getopt(sys.argv[1:],'hs:c:i:I')
opts = dict(opts)
self.argfiles = args
def getStopWordsFile(self):
if '-s' in self.opts:
return self.opts['-s']
class StopWords:
def __init__(self):
self.stopWrds = set()
def getStopWords(self,file):
f = open(file,'r')
for line in f:
val = line.strip('\n')
self.stopWrds.add(val)
f.close()
return self.stopWrds
我想打印停用词集,所以定义如下:
config = CommandLine()
filee = config.getStopWordsFile()
sw = StopWords()
print sw.getStopWords(filee)
命令行如下:
python Practice5.py -s stop_list.txt -c documents.txt -i index.txt -I
当我 运行 代码时,我得到了这个错误:
if '-s' in self.opts:
AttributeError: CommandLine instance has no attribute 'opts'
我无法解决的问题是如何从 init 方法中获取 opts 并在 getStopWordFile() 方法中使用它。那么这个问题可能的解决方案是什么?
您忘记在 __init__
中将 self.
添加到 opts
:
class CommandLine:
def __init__(self):
opts, args = getopt.getopt(sys.argv[1:],'hs:c:i:I')
self.opts = dict(opts)
self.argfiles = args
将下面的方法改成
def __init__(self):
opts, args = getopt.getopt(sys.argv[1:],'hs:c:i:I')
self.opts = dict(opts)
self.argfiles = args
我创建了两个 类:一个用于解析命令行参数,另一个用于从停用词文件中获取停用词:
import getopt, sys, re
class CommandLine:
def __init__(self):
opts, args = getopt.getopt(sys.argv[1:],'hs:c:i:I')
opts = dict(opts)
self.argfiles = args
def getStopWordsFile(self):
if '-s' in self.opts:
return self.opts['-s']
class StopWords:
def __init__(self):
self.stopWrds = set()
def getStopWords(self,file):
f = open(file,'r')
for line in f:
val = line.strip('\n')
self.stopWrds.add(val)
f.close()
return self.stopWrds
我想打印停用词集,所以定义如下:
config = CommandLine()
filee = config.getStopWordsFile()
sw = StopWords()
print sw.getStopWords(filee)
命令行如下:
python Practice5.py -s stop_list.txt -c documents.txt -i index.txt -I
当我 运行 代码时,我得到了这个错误:
if '-s' in self.opts:
AttributeError: CommandLine instance has no attribute 'opts'
我无法解决的问题是如何从 init 方法中获取 opts 并在 getStopWordFile() 方法中使用它。那么这个问题可能的解决方案是什么?
您忘记在 __init__
中将 self.
添加到 opts
:
class CommandLine:
def __init__(self):
opts, args = getopt.getopt(sys.argv[1:],'hs:c:i:I')
self.opts = dict(opts)
self.argfiles = args
将下面的方法改成
def __init__(self):
opts, args = getopt.getopt(sys.argv[1:],'hs:c:i:I')
self.opts = dict(opts)
self.argfiles = args