13

特定の行列(リストのリスト)を時計回りに回転させる関数を作成する必要があり、それをTableクラスで使用する必要があります。クラスrotateMatrixClockwiseの関数内から簡単に呼び出すことができるように、このユーティリティ関数(と呼ばれる)をどこに配置する必要がありますか?Table

4

2 に答える 2

13

静的関数にします...

  • @staticmethodデコレータを追加します
  • 最初の引数として「self」を含めないでください

あなたの定義は次のようになります:

@staticmethod
def rotateMatrixClockwise():
    # enter code here...

これにより、次の呼び出しによって「テーブル」をインポートしたすべての場所で呼び出し可能になります。

table.rotateMatrixClockwise()

デコレータは、暗黙の最初の引数が予期されていないことをPythonに通知するためにのみ必要です。メソッド定義をC#/ Javaのように動作させたい場合は、selfが常に暗黙的であるため、「@classmethod」デコレータを使用することもできます。

これは、Pythonマニュアルから直接提供されているドキュメントです。

注:ユーティリティクラスは、一般的にOOPの「単一責任の原則」に違反しているため、コードをモジュールに直接結合できない場合にのみ使用することをお勧めします。ほとんどの場合、メソッド/メンバーとしてのクラスの機能をクラスに結び付けるのが最善です。

于 2010-06-17T02:02:12.697 に答える
4

クラスのメンバーにしたくない場合は、モジュールTableに入れることができます。utilities

于 2010-06-15T22:36:48.773 に答える