在创建自己的类时,我无法理解方法的工作原理。
这是我的班级方法:
def compare_coll(self,coll_1, coll_2) -> None:
''' compares two collections of key words which are dictionaries,
<coll_1> and <coll_2>, and removes from both collections every word
that appears in both collection'''
overlap = set(coll_1).intersection(set(coll_2))
for key in overlap:
del coll_1[key], coll_2[key]
我的类'Collection_of_word_counts'有一个实例变量,名为'counts',它存储一个字典,其中键是单词,值是它们的出现次数。初始化程序将读取txt文件中的单词,并将它们存储在self.counts中。
我不知道如何使用这种方法。我知道我正确实现了它。
>>> c1.compare_coll(c2)
产生
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
builtins.TypeError: compare_coll() missing 1 required positional argument: 'coll_2'
和
>>> Collection_of_word_counts.compare_coll(c1,c2)
产生了同样的错误。
我不确定如何在shell中使用它。
答案 0 :(得分:1)
您的compare_coll
方法是实例方法,而不是类方法。按惯例称为self
的实例方法的第一个参数始终是调用方法的类的实例(例如self == c1
用于c1.compare_coll(c2)
),因此您只需要提供另一个论点。尝试:
def compare_coll(self, other) -> None:
overlap = set(self.counts).intersection(set(other.counts))
for key in overlap:
del self.counts[key], other.counts[key]
这适用于c1.compare_coll(c2)
或Collection_of_word_counts.compare_coll(c1, c2)
。
请注意,我已直接为方法中的两个实例引用了counts
。