私はOOPを学んでいます(通常は関数型プログラミングに使用されています)。この小さなスクリプトはここで実行されますが、オブジェクトにデータ値を永久に保存する方法がわかりません(この場合、オブジェクトのインスタンスの名前はcountで、インスタンスにself.countを格納しようとしています)。オブジェクトのインスタンスに値を正しく格納する方法は?
#! /usr/bin/python3
class WordCounter:
def __init__(self, count = 0):
self.__count = count
def set_count(self, path):
try:
nfile = open(path, "r")
except:
print("Could not open file")
fileList = []
lowerCaseList = []
line = nfile.read()
fileList.append(line.split())
nfile.close
lowerCaseList = [word.lower() for word in fileList[0]]
print(lowerCaseList)
self.count = len(lowerCaseList)
def get_word_count(self):
return self.count
def __str__(self):
return "Total word count is: " + str(self.__count)
if __name__ == "__main__":
count = WordCounter()
print(count)
count.set_count("/home/swim/Desktop/word_counter.txt")
print(count.get_word_count())
print(count)
そして、ここでは、出力されます。
総単語数は次のとおりです、「テキスト 'の' 0
[ 'ここ'、 'で'、 'A'、 '房'、 「うまくいけば」、「すべて」、「それ」、「これ」、「得られる」、「数えられる」、「正しく」、「ここに」、「それは」など)
合計単語数:0
getとsetのメソッドが正しく動作しているのが分かります。しかし、self.count変数をcountオブジェクトに格納するにはどうすればよいですか?
get(set)はget/setの前後で0と評価されます。
私はSTR方法は、ラインcount.set_count( "/パス/に/私/テキスト/ファイル")
後にも何かアドバイスを16を印刷し期待していましたか?再び
self.count = count
をそれぞれの方法で
self.__count
またはself.count
を使うのか?あなたは 'self.count = len(lowerCaseList)'と 'self .__ count = count 'という名前でプロパティを2回定義しましたが、おそらくそれらは同じものであることを意図していました。また、 'nfile.close'はcloseメソッドを呼び出すためのカッコが必要なのでファイルを閉じません。 – roganjoshカウントを格納するのに2つの変数を使用するのはなぜですか? –
ありがとうroganjosh。私はダミーhahahaのように感じる。それを指摘していただきありがとうございます。 __str__メソッドを使用して16を正しく印刷し、インスタンスに正しく保存しました。 –