Pythonクラスデコレータ、小さなデモを使用

同じ機能を実現するには、Java言語を使用するのに50行かかるのに対し、Pythonを使用するのに10行しかかからない場合があります。多くの読者は、Pythonを学習する前にPythonを使用したことがあり、その後始めた前任者からこれを聞いたことがあるでしょう。 Pythonを学ぶ。

Pythonは確かに簡潔でエレガントであり、私を含む多くの読者はそれに魅了されています。

今日、小さな例を通して、私はもう一度Pythonのクリーンな方法を理解しました。

すべてのパラメーターをチェックして、整数型が表示されないことを確認します。クラスデコレータを使用すると、クリーンで一般的なことができます。

import functools

classValidateParameters:
 def __init__(self, func):
  # funcの装飾後に機能情報が変更されていないことを確認してください
  functools.update_wrapper(self, func)
  self.func = func

 # このメソッドをオーバーライドして、クラスオブジェクトを呼び出し可能にします
 def __call__(self,*parameters):ifany([isinstance(item, int)for item in parameters]):
   raise TypeError("Parameter shouldn't be int!!")else:return self.func(*parameters)

上記のクラスを使用して、連結文字列関数concatなどのさまざまな関数の装飾を開始します。パラメータを渡す最初の呼び出しはすべて文字列であり、タイプは要件を満たしています。パラメータを渡す2番目の呼び出しは整数型であり、例外をスローします。パラメータintであってはいけません!!

@ ValidateParameters
def concat(*list_string):return"".join(list_string)

# returns anb
print(concat("a","n","b"))

# raises Error.print(concat("a",1,"c"))

タイプチェックが必要な関数は、ValidateParemetersで装飾できます。大文字の関数は次のとおりです。文字列を連結した後、最初の文字を大文字にする必要があります。

@ ValidateParameters
def capital(*list_string):returnconcat(*list_string).capitalize()print(capital("a","n","b"))print(capital(2,"n","b"))

入力パラメータが整数型の場合、上記の例外をスローする必要があり、型チェックも便利です。

上記では、Pythonクラスデコレータを使用して、コードクリーンの小さなデモンストレーションを実装しています。

Pandas、TensorFlow、Kerasなどの一般的に使用されるフレームワークは、ソースコードで同様の使用法を確認できます。この種の構文により、Pythonは本当にクリーンになります。

Pythonをマスターするには、外側から内側まで理解する必要があります。今年は、初心者に非常に適した20のコアPythonトピックを整理するために4か月以上を費やしました。ここにいくつかの章があります。

これらの20のトピックをマスターして理解した後、いくつかの詳細なPythonチュートリアルを読むことができます。あなたはその時点で専門家になると思います。

Recommended Posts

Pythonクラスデコレータ、小さなデモを使用
Pythonデコレータ
100の小さなPythonの例
python-pythonを使用して小さなショッピングプログラムを作成します
Pythonクローラー-美しいスープの使用
Python3外部モジュールの使用