Python 如何设置类方法中引用的类范围变量
我对python和编程有点陌生,所以我不确定我是否正确使用了术语,但是 我正在编写一个简短的程序,它将读取文本文件中的单词,将它们拆分成一个数组,然后只输出指定长度的单词 但是,我在尝试设置数组和文件变量时遇到了一个问题。虽然整个程序可以运行,但在每个函数中,我都会重新实例化文件变量(file=open()到file.close),我想知道是否有任何方法可以使变量在类范围内 我曾尝试通过在函数前缩进使它们在类范围内,但后来我得到了一个错误,因为Python 如何设置类方法中引用的类范围变量,python,Python,我对python和编程有点陌生,所以我不确定我是否正确使用了术语,但是 我正在编写一个简短的程序,它将读取文本文件中的单词,将它们拆分成一个数组,然后只输出指定长度的单词 但是,我在尝试设置数组和文件变量时遇到了一个问题。虽然整个程序可以运行,但在每个函数中,我都会重新实例化文件变量(file=open()到file.close),我想知道是否有任何方法可以使变量在类范围内 我曾尝试通过在函数前缩进使它们在类范围内,但后来我得到了一个错误,因为name和set\u length尚未实例化 正如我
name
和set\u length
尚未实例化
正如我所说,这是我第一次在课堂上工作,所以任何建议都会很有帮助。谢谢
class FileParser:
def __init__(self,name,set_length):
self.name = name
self.set_length = set_length
def Print_words(self):
File = open(self.name, "r")
Allwords = File.read()
words = Allwords.split("\n")
File.close()
for word in words:
if len(word) <= self.set_length:
print(word)
def length_counter(self):
File = open(self.name, "r")
Allwords = File.read()
words = Allwords.split("\n")
File.close()
x = 0
for word in words:
x += 1
text = "there are {} many words in this file".format(x)
return text
类文件解析器:
定义初始化(自我、名称、设置长度):
self.name=名称
self.set_length=set_length
def打印字(自我):
文件=打开(self.name,“r”)
Allwords=File.read()
words=Allwords.split(“\n”)
File.close()文件
用文字表示:
如果len(word)它不应该是类变量,因为每个FileParser
实例读取不同的文件
您可以在\uuuu init\uuuu
方法中读取文件,并将单词列表指定给实例属性
class FileParser:
def __init__(self,name,set_length):
self.name = name
self.set_length = set_length
with open(name, "r") as f:
data = f.read()
self.words = data.split("\n")
def Print_words(self):
for word in self.words:
if len(word) <= self.set_length:
print(word)
def length_counter(self):
text = "there are {} many words in this file".format(len(self.words))
return text
类文件解析器:
定义初始化(自我、名称、设置长度):
self.name=名称
self.set_length=set_length
以open(名称“r”)作为f:
data=f.read()
self.words=data.split(“\n”)
def打印字(自我):
对于self.words中的单词:
如果len(word),它不应该是类范围的,因为每个实例读取不同的文件。把它放在self中。所有单词
BTW,最后一个循环应该是x=len(单词)
文件
变量完全是偶然的。您只需要使用它来填充words
变量,后者才是您所关心的。在不需要的情况下重复读取文件是对资源的严重浪费。您应该创建一个方法来读取文件,在初始化实例时只调用一次,并将内容保存在实例变量中,例如self.words
。太棒了,谢谢。with语句到底是做什么的?这就像是打开和关闭一个文件的组合,还是我弄错了?这就是问题所在。