はそのfilter_dict.get_keyval("author")
のfilter_dict
オブジェクトの種類のキー値を取得することが可能ですしていない:?は辞書オブジェクトのクラスのメソッドを呼び出す:はAttributeError:「辞書」オブジェクトには属性「get_keyval」
import json
class Config(dict):
def open_json_file(self, json_string):
load_dict = json.loads(json_string)
return load_dict
def get_keyval(self, key):
search_key = self.load_dict.get(key)
return search_key
filter_dict = Config().open_json_file('{"author" : "Steve", "author_email" : ""}')
print(filter_dict.get_keyval("author"))
取得します:
AttributeError: 'dict' object has no attribute 'get_keyval'
は次の回避策をしました(それは私が欲しいものではありません):
import json
class Config():
def open_json_file(self, json_string):
load_dict = json.loads(json_string)
return load_dict
def get_keyval(self, json_string, key):
search_key = json_string.get(key)
return search_key
filter_dict = Config().open_json_file('{"author" : "Steve", "author_email" : ""}')
print(Config().get_keyval(filter_dict, "author"))
クラスメソッドを正しく使用していません。クラスメソッドを呼び出すたびに、新しいクラスインスタンスを作成したくない* - それは気違いです。この場合、クラスメソッドが必要なく、静的メソッドが必要です。したがって、@ @ staticmethodデコレータを追加してから、コンストラクタを呼び出さずにメソッドを呼び出してください。 –
なぜこれらのメソッドが最初に必要ですか?既存のオブジェクトの機能をラッピングするだけです。 'filter_dict = json.loads( '...')'と 'print(filter_dict.get(" author "))'はクラスを必要とせずに同等です。 – MisterMiyagi