CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。
はじめに 最近はあまり触れていないが、PythonでDiscordのBOTを作成しようとすると、discord.pyやPycordのようなライブラリを使うのが一般的と思う。 その中でよく使われる構文の中に@bot.commandのような構文を目にすることだろう。 これはデコレータと呼ばれる構文なのだが、私は中身の構造は関数型引数を実装した関数のような感じなんだろうなと予想はしながらも、なんとなしで利用していた。 そんなわけで、調べていきながら便利な使い方なんかを探してみる。 import discord from discord.ext import commands intents = discord.Intents.default() intents.members = True intents.message_content = True bot = commands.Bot( co
はじめに 最近はあまり触れていないが、PythonでDiscordのBOTを作成しようとすると、discord.pyやPycordのようなライブラリを使うのが一般的と思う。 その中でよく使われる構文の中に@bot.commandのような構文を目にすることだろう。 これはデコレータと呼ばれる構文なのだが、私は中身の構造は関数型引数を実装した関数のような感じなんだろうなと予想はしながらも、なんとなしで利用していた。 そんなわけで、調べていきながら便利な使い方なんかを探してみる。 import discord from discord.ext import commands intents = discord.Intents.default() intents.members = True intents.message_content = True bot = commands.Bot( co
ちくわの穴に具をつめる調理グッズ「ちくわデコレーター」 ちくわの穴づめが簡単に! レパートリーが驚くほど広がる 白いプラスチック製で、細長い剣のような形です。トレイ部は幅約1cm×深さ約0.8cm×長さ約12cmの細長い溝状になっています。そこに具材をつめて、ちくわの穴に差し込んで、デコレーターを抜き取るだけで、簡単に穴づめ(射込み)ができます。中央に可動式の抜き取り固定板があり、押さえながらデコレーターを抜くと、具材がつまった状態でスムーズに取り外せます。 これまで硬い食材しかつめられなかったちくわに、やわらか、練り状、粒状、しんなりした具材もつめられるようになり、レパートリーが無限に広がります。味や彩りを楽しめるので、おかず、おつまみ、お弁当に大活躍します。食品業界の盛り上げにも役立ちます。 ●「ちくわデコレーター」 材質:ポリプロピレン 耐冷・耐熱温度:-20度・120度 本体サイズ
クラスを使ったデコレータの実装方法を紹介する。 クラスを使ってデコレータを実装する場合、__init__() メソッドの引数でデコレート対象の関数(メソッド)を受け取る。 関数に適用するデコレータとメソッドに適用するデコレータは実装方法が異なる。 関数に適用するデコレータは必ずしもクラスで実装する必要はないが、ここではクラスを使った実装を取りあげる。 関数に適用するデコレータ 関数に適用するためのデコレータをクラスで実装するには、__call__() メソッドを実装して呼び出し可能オブジェクトをラッパー関数として扱う。 デコレータの実装例を次に示す。 1 2 3 4 5 6 7 8 9 10 11 12 13 from functools import update_wrapper class decorate_function: """Decorator for function"""
Python の "デコレータ(decorator)" を作ってみることにします。 汎用的なデコレータの枠組み(フレームワーク)を作成します。 引数を渡さないデコレータ 引数を渡すデコレータ これらを統合した枠組みのデコレータ を作ります。 最初にデコレータのフレームワーク(ゴール)を提示し、それに向かって作っていきます。 デコレータのフレームワーク この記事は、読み下すように書いている(試行錯誤を繰り返しながらゴールに向かう)のと、長文なので、先にデコレータの書き方(フレームワーク、枠組み)だけ記載しておきます。テストを含めたフルバージョンは最後に記載します。忙しい方は、時間のある時にゆっくりご覧ください。 ※ 制限事項: デコレータの第1引数に呼び出し可能なオブジェクトを指定できません。 from functools import wraps def my_decorator( *ar
この記事ではTypeScriptのデコレータ(@)について分かりやすく説明していきたいと思います! 結論デコレータはJavaScriptのクラスやメソッドに対して動的な機能を追加するための構文です。 ただ、TypeScriptでもその機能を活用することができます。 種類としては、クラスデコレータ、プロパティデコレータ、メソッドデコレータ、パラメータデコレータがあります。 それぞれを使い分けて効率的なコードを書きましょう! TypeScriptのデコレータの種類先程も紹介したように、TypeScriptのデコレータには4つの種類があります。 クラスデコレータ プロパティデコレータ メソッドデコレータ パラメータデコレータ それぞれのデコレータについて、具体的なコード例とともに説明していきますね。 クラスデコレータクラスデコレータはクラス宣言の直前に記述されるものです。 次のコード例では @s
概要 retryデコレータの実装を通してコルーチンに適用するデコレータの実装方法を紹介します。 背景 ロギングやメトリクスの計測などの実装をロジックとは分離したいので、デコレータとして実装します。 Python3ではasync defでコルーチンを定義することができますが、コルーチンに適用可能なデコレータは通常の関数に対するデコレータとは実装方法が若干異なります。 実装 デコレートするコルーチンはコルーチンを返すようにするところがポイントです。 import asyncio import functools def retry(tries: int = 1, retry_interval: float = 0, exceptions=(RuntimeError,)): assert tries > 0, "retries must be greater than or equal to 0
はじめに Pythonにはデコレータという機能があります。デコレータを使うことで、以下のようなシンタックスシュガーを使うことができ、簡潔に共通処理なんかを書くことができます。 def sample_decorator(f): def _wrapper(*args, **keywords): # 前処理 print("pre process") _f = f(*args, **keywords) # 後処理 return _f return _wrapper @sample_decorator # hello = sample_decorator(hello)と同じ def hello(): print("Hello World") さて、このデコレータですが、Flaskで使おうとすると落とし穴にハマることがあります。この記事では、落とし穴の回避方法を紹介します。 Flaskでデコレータを使
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く