在Python的类中使用类变量的名称令人费解

问题描述

我是面向对象编程的新手,并且我有以下关于类变量的问题: 我想使用一个亵渎过滤器,该类具有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)