0

私は OOP を初めて使用し、Python で小さなツールを作成しています。このツールは、Web からの JSON ロードを使用してビットコインの価格をチェックしBitcoin() class、価格を監視し、Monitor()しきい値に達したときにユーザーに通知し、今のところNotify()コンソール インターフェイスInterface()を使用してそうしています。

Bitcoin()JSON ロードから価格とボリュームを読み取ることができるクラスを作成しました。この__init__定義は、ソケットを使用して Web に接続します。このクラスのすべてのインスタンスが新しいソケットになるため、このクラスのインスタンスを 1 つだけ実行する必要があります。

  1. クラスはこれにアプローチするための最良の方法ですか?
  2. 他のクラスやインスタンスが自分のBitcoin()インスタンスと対話するための最良の方法は何ですか?
  3. Bitcoin()インスタンスをグローバル化する必要がありますか? インスタンスを引数として、それを必要とするすべてのクラスに渡しますか?
4

6 に答える 6

1

http://www.youtube.com/watch?v=o9pEzgHorH0

このビデオがあなたのプロジェクトにどの程度関連しているかはわかりません (実際に読むコードはありません)。しかし、おそらくあなたはあなたの質問に対する答えを見つけるでしょう. 少なくとも何か新しいことを学ぶことができます。それがここにある目的です。

于 2013-04-04T17:37:01.950 に答える
1

私があなただったら、私のコードは次のようになります:
(すべての一連のジョブのクラス。これはあなたがしていることではありません)

class Interface:
    ''' Handle UI '''
    ...

class Connect:
    ''' Handle web interface '''
    ...

class Bitcoin:
    ''' Handle the calculations '''
    ...

class Notify:
    ''' Notifier '''
    ...

つまり、クラスをより小さく単純なクラスに分割します

今あなたの質問のために:

  1. はい、手元に「複雑な」問題があり、Pythonを使用しているため、OOP以外のバージョンよりもOOPバージョンを作成する方が間違いなく簡単です。したがって、そうしない正当な理由がない限り、OOP に固執してください。
  2. あなたの場合、インスタンスを引数として渡すこともできます。
  3. これは良い考えです。これにより、スコープを十分に理解していない場合にスコープによって引き起こされる問題が解消されます。
    ただし、値ではなく参照を渡すことを忘れないでください。そのため、インスタンスを操作すると、インスタンスが渡される他のクラスに影響を与える可能性があります。

注:クラスのコンストラクターでソケットを開くことはお勧めできません。メソッドに入れておいたほうがいいかもしれません。

于 2013-04-04T17:44:29.840 に答える
0

確かに、この目的のために Python クラスを使用できます。モジュール レベルのインスタンスも使用できます (グローバル キーワードや引数として明示的に渡す必要はありません)。それは好みの問題です。

基本的に、シングルトン パターンの python 固有の実装について質問しています。ここで回答されています: Python とシングルトン パターン

パターン自体の説明はここにあります: http://en.wikipedia.org/wiki/Singleton_pattern

于 2013-04-04T17:47:19.143 に答える