2017-08-23 6 views
-2

私はEvernote APIを使ってこのアプリを書いており、同じ引数を何度も繰り返し使用して多くの関数を呼び出すことができます。どのように私はグローバル変数を使用せずにこれを避けることができますか?多くの関数で特定の引数を繰り返さないようにするにはどうすればよいですか? (Python)

def get_all_notes(dev_token, noteStore): 

def find_notes(notebook, dev_token, noteStore): 

def main(): 
    dev_token = ... 
    noteStote = ... 
    notes = get_all_notes(dev_token, noteStore) 
    notes_from_notebook1 = find_notes(notebooks[0], dev_token, noteStore) 
+1

引数をいくつかのタイプのコンテナに格納できます。これは、毎回入力する引数の数を減らす可能性があります。もしそれがあなたが探しているものであるかどうかわからない – Cuber

+2

'dev_token'(...命名規則?)なしで' noteStore'を使うことは決してなく、それらは同じライフサイクルを持っています。それを周りに渡す?これは本当にPythonに固有のものではありません:https://refactoring.guru/smells/long-parameter-list – jonrsharpe

+0

問題の内容と達成しようとしていることの詳細を教えてください。 – Skitzafreak

答えて

6

同じ引数を何度も使用していて、変更されていない場合は、変更しないでください。たぶん、彼らにクラスを作ることを求めているのでしょうか?

class MyNotesController: 
    def __init__(self, dev_token, noteStore): 
     self.dev_token = dev_token 
     self.noteStore = noteStore 

    def get_all_notes(self): 
     # Use self.dev_token and self.noteStore 


    def find_notes(self, notebook): 
     # Use self.dev_token and self.noteStore 

def main(): 
    dev_token = ... 
    noteStote = ... 
    my_ctrl = MyNotesController(dev_token, noteStote) 
    notes = my_ctrl.get_all_notes() 
    notes_from_notebook1 = my_ctrl.find_notes(notebooks[0]) 
関連する問題