问题描述
我是面向对象编程的新手,并且我有以下关于类变量的问题:
我想使用一个亵渎过滤器,该类具有Profanity
类,并且我希望在[{1}}方法中传递一个成绩单文件和一个单词表文件作为参数。 (请参阅下面的完整代码)。
结果对象的定义应如下:__init__
,其中p = Profanity("sample_transcript.txt",eng)
代表英语,并且该语言参数可以用其他语言参数替换,例如德语的eng
等。 )。为此,我在deu
命令的正下方定义了类变量eng = "/home/user/sw_filter/wordlists/google_profanity_wordlist_eng.txt"
和deu = "/home/user/sw_filter/wordlists/profanity_wordlist_deu.txt"
。
我认为这些类变量在该类的所有对象之间共享,但是在运行代码时出现错误class
。当我将语言文件路径设置为全局变量时,它可以工作,但我希望将它们存储在类中。有什么办法吗?我究竟做错了什么?我真的很感谢我能得到的任何帮助。
非常感谢您!
NameError: name 'eng' is not defined
解决方法
在您的代码中,问题出在这一行:
True
在创建对象时,您传递的第二个参数未在该域中定义,而是在类中定义为类属性。 正如我们所知,类属性通常对于类的所有实例都是通用的,并且可以通过实例或类名访问。
所以你应该做的就是像这样改变上面提到的行:
p = Profanity("sample_transcript.txt",eng)