【发布时间】:2020-10-21 12:09:40
【问题描述】:
我是面向对象编程的新手,在声明设置为类中方法的全局变量时遇到了一些麻烦。我用self.censored_transcript = self.apply_filter() 在__init__ 方法中声明了它们(我希望它们在类内,而不是在类外),在这个文件中,一切正常。但是当我在不同的 .py 文件中导入类并实例化 Profanity 类时,会出现以下错误:UnboundLocalError: local variable 'censored_transcript' referenced before assignment。我已经对这个主题进行了相当多的研究,但找不到任何适合我的情况。 global 语句不起作用。谁能告诉我如何解决这个问题?非常感谢您!
文件1(要导入的文件),名为profanity_filter.py:
from better_profanity import profanity
class Profanity(object):
def __init__(self, transcript_filename, wordlist_filename):
self.__transcript_filename = transcript_filename
self.__wordlist_filename = wordlist_filename
self.__transcript = self.__load_transcript()
self.censored_transcript = self.apply_filter()
def __load_transcript(self):
f = open(self.__transcript_filename, "r")
file = f.read()
f.close()
return file
def apply_filter(self):
if __name__ == "__main__":
profanity.load_censor_words_from_file(self.__wordlist_filename)
censored_transcript = profanity.censor(self.__transcript)
return censored_transcript
文件2(测试文件):
from profanity_filter import Profanity
# Instantiate the Profanity class:
p = Profanity("sample_transcript.txt", "profanity_wordlist.txt")
# Apply the profanity filter.
censored_transcript = p.apply_filter()
print(censored_transcript)
【问题讨论】:
-
你使用
if __name__ == "__main__"的目的是什么?也许您正在寻找Singletone架构师模式?
标签: python-3.x class oop global-variables