並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 122件

新着順 人気順

デコレータの検索結果1 - 40 件 / 122件

  • Python: デコレータについて - CUBE SUGAR CONTAINER

    Python の特徴的な構文の一つにデコレータがある。 便利な機能なんだけど、最初はとっつきにくいかもしれない。 そこで、今回はデコレータについて一通り色々と書いてみる。 先に断っておくと、とても長い。 これを読むと、以下が分かる。 デコレータの本質 デコレータはシンタックスシュガー (糖衣構文) に過ぎない デコレータの作り方 引数を取るデコレータと取らないデコレータ デコレータの用途 用途はラッピングとマーキングの二つに大別できる デコレータの種類 デコレータは関数、メソッド、インスタンスで作れる デコレータの対象 デコレートできるのは関数、メソッド以外にクラスもある 今回使った環境は次の通り。 尚、紹介するコードの中には、一部に Python 3 以降でないと動作しないものが含まれている。 $ python -V Python 3.6.6 デコレータについて まずはデコレータのおさら

      Python: デコレータについて - CUBE SUGAR CONTAINER
    • Pythonのデコレータを理解するための12Step - Qiita

      古い記事なんですが, Pythonのデコレータの概念をつかむには良記事だったので和訳意訳してみました. http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/ Step1. 関数 これは基本ですね. Pythonにおいて関数はdefキーワードにより関数名とパラメータのリスト(任意)とともに定義できます.また括弧付きで名前を指定することで実行できます. Step2. スコープ Pythonでは関数を作ると新しいスコープが作られます.言い方を変えるとそれぞれの関数がそれぞれに名前空間を持つということです. Pythonではこれらを確認することのできる組み込み関数も用意されていて, locals()で自身の持つローカルな名前空間の値を辞書形式で返却します.

        Pythonのデコレータを理解するための12Step - Qiita
      • デコレータ使わない Vue.js + TypeScript で進んだ「LINEのお年玉」キャンペーン

        皆さん、こんにちは。LINEでフロントエンド開発を担当しているUIT1室のシュウと申します。 今回、年に一度の企画「LINEのお年玉」キャンペーンにて JavaScript の部分を担当させていただきました。LINEのお年玉は多くのトラフィックが流れる大規模かつ短期間の企画となります。 技術的な挑戦をするためのプロジェクトとしてもちょうど良いサイズ感であったため、今回多くの挑戦を行いましたので、連載形式で紹介していければと思います。 初回である今回は、Vue.js と TypeScript を併用した開発についてです。 なぜ TypeScript を使うのか? これまで LINE のプロジェクトでは、JavaScript をメインの言語としてフロントエンド開発を行ってきました。ですが、時代の流れもあり、現在では新規プロジェクトの多くが TypeScript を採用しています。 月並みですが

          デコレータ使わない Vue.js + TypeScript で進んだ「LINEのお年玉」キャンペーン
        • Python入門:デコレータとは

          前から常々思っていることだが、何かについて勉強する一番効率的な方法はそれを誰かに教えること。人に教えようとすると、それなりに準備をしなければならないし、自分の頭の中を整理しなければならない。また教える過程でするどい質問をされたり間違いを指摘されて、さらに勉強を強いられることもある。 私がこの手の「入門編エントリー」を書くのは、ほとんどの場合「自分自身の理解をより深めたい」ことが一番の目的であるが、ブログの場合、教室などと違って「その道の達人」みたいな人たちがツッコミを入れてくれるケースもしばしばあるので、そのメリットは何倍にもなる。 先日のクロージャに関するエントリーなどは良い例で、「そんな用途にはmemoizeというデコレータが便利」などの指摘がいただけだけであれを書いた価値があるというもの。 そこで、今日はPythonのデコレータに関して。デコレータがPythonという言語に導入された

          • Python のクラスメソッド – デコレータ @classmethod, @staticmethod を使って

            1. メソッドをクラスメソッドにするときは、デコレータを使う あるメソッドをクラスメソッドにするとき、 Python ではデコレータを使うことができる。 2.1 組み込み関数 によると、(太字は引用者による) classmethod( function) function のクラスメソッドを返します。 クラスメソッドは、インスタンスメソッドが暗黙の第一引数としてインスタンスをとるように、第一引数としてクラスをとります。クラスメソッドを宣言するには、以下の書きならわしを使います: class C: @classmethod def f(cls, arg1, arg2, ...): ... ふーむ、ここでも第一引数が必須で、それがクラスを参照するということか。Python のこういう書き方は、最初とっつきにくいと感じた。 (+_+) デコレータの書き方としては、関数の前に @classmeth

              Python のクラスメソッド – デコレータ @classmethod, @staticmethod を使って
            • Pythonのデコレータについて - Qiita

              今回は、Pythonデコレータについて話そうと思います。 はじめに。 エキスパートPythonプログラミング1に沿って勉強していた際に、Pythonのデコレーターという概念が出てきました。ちょっと本に書いてある内容では何を言っているかわからなかったので、いろいろ調べてみました。 デコレーターとは デコレートとは修飾する。って意味になりますが、デコレータとは、簡単に言うと、ある関数を修飾するための関数とその仕組みです。例えば、ある関数があったとします。ここでは次のようなtest()関数とその実行スクリプトを見てみましょう。 サンプルスクリプト1

                Pythonのデコレータについて - Qiita
              • PythonのWebフレームワーク使うなら知っておきたいデコレータ - 神様なんて信じない僕らのために

                最近「オワタ\(^o^)/」で有名なDjangoしか触ってないダメ人間です。 こんにちは。 Djangoとかどうでもいいがな、 Webフレームワークとかめんどくさいがな、 という最近なのでDつながりでDecoratorの話をします。 ナウでヤングなPythonistaのホットな話題はGCの参照カウンタ、 ではなくてFlaskとかかもしれないですが、 @app.route("/") def hello(): return "Hello World!" こいつも多分に漏れずDecoratorを使います。 Djangoでも、 @require_GET とか @require_POST とか使ったり見たことがあるんじゃないかと思います。 で、意外と魔法っぽいデコレータですが、 これっていったいどうなってんの? って事を知らない人が割といたりします。 「とりあえず指定しろって言われたから指定してます

                  PythonのWebフレームワーク使うなら知っておきたいデコレータ - 神様なんて信じない僕らのために
                • Pythonのデコレータを使ってAWS Lambdaを圧倒的に読みやすくする - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」

                  基盤系システム部の梶田です。 BIGLOBEではAmazon Web Services(AWS)の活用を推進しています。AWSマネージドサービスの活用機会が増えると、イベントハンドラやフィルターとしてLambda Functionを書く機会も増えてきます。 数をこなしているうちに、Lambda Functionのイベントハンドラにはマネージドサービス毎におきまりのパターン化(お作法)があることに気づきました。 何度も現れるパターンを再利用するには、Pythonのデコレータ機能がうってつけです。このBlogではAWS CodeDeployを題材にして、Lambda Functionを簡素化していった過程をご紹介します。 最後のコードは驚くほど読みやすくなりますので、少々お付き合いください。 CodeDeployのイベントハンドラ デコレータを使ってお作法を隠蔽する おわりに CodeDepl

                    Pythonのデコレータを使ってAWS Lambdaを圧倒的に読みやすくする - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」
                  • きれいで読みやすいJavaScriptを書く デコレーターの基本を先取り

                    ES2015の登場とトランスパイラーの普及により、コードや記事の中で言語の新機能を見かけることが増えました。とりわけ難しい新機能がJavaScriptのデコレーターです。 デコレーターはAngular2に採用されたことで人気が高まりました。デコレーターは現時点ではAngularではTypeScriptで使うことができ、JavaScript(ECMAScript)のプロポーザルではステージ2(編注:ドラフト)です。将来的にはJavaScriptにも採用されるでしょう。そこで、デコレーターの役割や、デコレーターを使ってきれいで読みやすいコードを書く方法を紹介します。 デコレーターとは デコレーターは、コードの一部をほかのコードでデコレート(装飾)するように包むことで、「関数合成」や「高階関数」と表現されていました。JavaScriptで実装可能で、具体的には次のようにある関数をほかの関数で包む

                      きれいで読みやすいJavaScriptを書く デコレーターの基本を先取り
                    • PythonでLambda Functionを書く時にデコレータでイベントソース毎の共通処理をすると便利という話

                      この記事はServerless2 Advent Calendar 2018の21日目の記事です。 qiita.com 先日 AWS Lambda Custom Runtimes芸人 Advent Calendar 2018 の方はちょっとはっちゃけすぎた感もありつつ実戦にすぐに役に立つような内容ではなかったですが、今回はマジメにより実戦的な内容で行きたいと思いますw marcy.hatenablog.com はじめに 私は普段は主にPythonでLambda Functionを書いているのですが、イベントの処理方法を予め決めてデコレータで共通処理を行うようにしています。それによってServerlessな開発でよく話題になるトレーサビリティの問題やエラーハンドリングの煩雑さなどをある程度上手く解決できているので紹介したいと思います。 なお、出てくるコードは実際に使用しているものに近いですが、

                        PythonでLambda Functionを書く時にデコレータでイベントソース毎の共通処理をすると便利という話
                      • Pythonのデコレータ(decorator)を理解する 1 - Soleil cou coupé

                        StackOverFlow:Understanding Python decoratorsに対するe-satis氏によるデコレータの丁寧な解説。 一つエクスキューズしておくと、翻訳の作法とかよく分かってません。でも頑張ったつもり。つもり。 Imran氏による質問の内容 @makebold @makeitalic def say(): return "Hello" というデコレータに対して <b><i>Hello</i></b> という文字列を返すような関数ってどうやって書いたらいいの? e-satis氏による解説 Pythonの関数はオブジェクトである デコレータを理解するためには、まずPythonにおける関数がオブジェクトであることを理解しなければならない。このことは重大な影響をもたらす。なぜなのか簡単な例とともに見てみよう。 def shout(word="yes"): return

                          Pythonのデコレータ(decorator)を理解する 1 - Soleil cou coup&#233;
                        • 【Python】体当たりで学ぶデコレータとスコープ | DevelopersIO

                          こんにちは。DI部の春田です。 Pythonのデコレータを使いこなすには、スコープの理解が必要です。スコープの概念を理解しても、いざ実際に実装しようとすると正しく扱えていなかったりすることがあるかと思います。 今回は概念的の話は後回しにし、1つのサンプルコードに対してトライ&エラーを繰り返して、Pythonのデコレータとスコープを体当たりで理解していきたいと思います。概念の話は検索すればたくさんヒットすると思うので、そちらを当たっていただけたらと思います。 今回使用するサンプルコードです。(Python 3.7.3) var_a ~ var_e: 5つの変数 var_f ~ var_h: 3つの引数(パラメータ) outer(var_f): inner(var_g) を内包する関数 inner(var_g): メインの関数 decorator(var_h): inner(var_g)をラッ

                            【Python】体当たりで学ぶデコレータとスコープ | DevelopersIO
                          • RailsでDraperを使ってプレゼンテーション層(デコレーター)を実装する - Rails Webook

                            Photo by Flickr: HerryLawford's Photostream DraperはRailsのプレゼンテーション層の役割を担うgemです。 この記事では、Draperを通し、プレゼンテーション層の必要性や使い方を説明します。 動作確認 Ruby 2.2.1 Rails 4.2.0 Draper 1.4.0 目次 0. プレゼンテーション層の必要性 1. Draperのインストール方法 2. Draperの簡単な使い方 3. デコレーターインスタンスの作成 3.1. 単独のオブジェクトのデコレーター 3.2. コレクションの個々のオブジェクトのデコレーター 3.3. コレクション自身のデコレーター 3.4. 関連するオブジェクトのデコレーター 4. デコレータークラスの作成 4.1. デコレーター内でヘルパーメソッドへのアクセス 4.2. デコレーター内でモデルオブジェク

                              RailsでDraperを使ってプレゼンテーション層(デコレーター)を実装する - Rails Webook
                            • あらためてデコレーターを学ぶぞ

                              はじめに NestJS入門してみようとしたら、アットマークから始まる記述を知らなかったので調べたことを簡単にまとめた記事です(デコレーターのことよくわかってなかった) デコレーターの仕様は、過去にいろいろと変わって現在に至っているようでしたが、ようやく最近 ECMAScript では Stage 3 になり、TypeScript では今も実験的なサポート experimentalDecorators を使えますが、バージョン 4.8 で TC39 の Decorators を実装することが検討されているようです! この記事は、TypeScriptのドキュメントのサンプルコードを動かしてみたり、あらためてNestJSのコード読んだりしてみた感想を書いてみました。 最近のデコレーターを追えてない、NestJSを動かしてみようとしたらデコレーターってなんぞや、となったかたの参考になれば幸いです。

                                あらためてデコレーターを学ぶぞ
                              • 指定時間内に関数が終了しなかったら何かするデコレータ - Qiita

                                昨日投稿したTipsの改良版です。通知する部分をハンドラ関数を渡すようにして分離し任意の処理を行えるようにしました。 また、@methaneさんに教えていただいた functools.wrap を使ってみました。このデコレータがついた関数をpaverの@taskにもしてみたのですがヘルプがNoneとなり docstring が表示されなかったのはこれを使っていなかったからのようでした!(functools.wrapを使うとヘルプにdocstringが表示されました) from functools import wraps def on_timeout(limit, handler, hint=None): ''' 指定した実行時間に終了しなかった場合、handlerをhint/limitを引数にして呼び出します @on_timeout(limit=3600, handler=notify_

                                  指定時間内に関数が終了しなかったら何かするデコレータ - Qiita
                                • デコレータを書く時にはfunctools.wrapsを使おう - スコトプリゴニエフスク通信

                                  トリビアルな例だが、元の関数(func)をデコレート・ラップするmydecoratorというデコレータを書いた時、下のように単純にinnerを返すと、 def mydecorator(func): def inner(*args, **kwds): print "Hi, I'm inner!" return func(*args, **kwds) return inner @mydecorator def hello(to): """ Say hello to somebody """ print "Hello, %s!" % to if __name__ == '__main__': print repr(hello) print hello.__doc__ 結果として、 None のように、デコレートされた元の関数(hello)の関数名やドキュメント文字列が失われてしまう。デコレータを

                                  • Python のデコレータ式 (1)

                                    1. デコレータの仕組みについて知りたい Python を使っていて、これまでに所々でデコレータを目にしてきた。 関数のネストと f()() 可変引数 クラスメソッド – デコレータ @classmethod, @staticmethod を使って デコレータの仕組みについて理解してないので、そろそろ確認しておくことにする。 デコレータと等価な関数定義 7.5 関数定義 には、デコレータを使った関数定義と、それと同等の式の例が書かれている。 関数定義は一つまたは複数のデコレータ式 (decorator expression) でラップできます。… 例えば、以下のようなコード: @f1(arg) @f2 def func(): pass は、 def func(): pass func = f1(arg)(f2(func)) と同じです。 これを元に、いくつか例を考えてみる。 2. デコレー

                                    • 思いを結ぶ花のギフト サンジョルディフラワーズ ザ・デコレーター【公式】

                                      サンジョルディフラワーズ ザ・デコレーターは 「街中にある花屋」のように花を置いていません。 贈り主の伝えたい思いをヒアリングし、「花」というツールを通して その思いを形にし、1つずつ心を込めてお作りします。 贈り主の思いを大切にしたフルオーダーメイドのサービス。 大切な瞬間を、花とともにご提案します。 View more

                                        思いを結ぶ花のギフト サンジョルディフラワーズ ザ・デコレーター【公式】
                                      • Python デコレータ再入門  ~デコレータは種類別に覚えよう~ - Qiita

                                        Pythonのアットマーク(@)を使った記法であるデコレータについてまとめる。難しいと思われているかもしれないデコレータだが、デコレータの種類(パターン)を意識することが理解の近道だと思ったので今回は種類別にデコレータの簡単な実装例をあげて解説をしていこうと思う。 対象者 Python のデコレータを学んだことがあるがたまに分からなくなる デコレータを自作しろと言われたらスラスラかけるか不安 知っていると良いこと 関数のスコープ 第一級関数 *args , **kwargs のような記法 デコレータ関数の種類分け 以下2つの要因でデコレータ関数の種類分けが可能だと思われる。 引数を取るか否か ラッパー関数を返すか否か よって組み合わせから計4つのパターンが考えられるが、今回は "引数を取らずラッパー関数を返さないデコレータ"を除いた3つを紹介する。1つ除外する理由は簡単すぎて意味がなさそう

                                          Python デコレータ再入門  ~デコレータは種類別に覚えよう~ - Qiita
                                        • 【JavaScript】デザインパターンを知ってみる。デコレータ編 | バシャログ。

                                          夏に向け今度こそダイエットしたいminamiです。 今回はJavaScriptでデコレータパターンを書いてみようと思います。 なぜ使うのか? デコレータ(装飾者)パターンは既存のオブジェクトに新しい機能や振る舞いを動的に追加することを目的としたデザインパターンです。 デコレータパターンの特徴としては下記が挙げれらます。 既存のオブジェクトに新しい機能や振る舞いを動的に追加する 基本となるものにどんどんトッピングや装飾をしていくイメージに近いです。 どういった使い方が考えられるでしょうか。 たくさんのトッピングが選べるコーヒー店を想定します。 基本のコーヒーに豆乳やホイップやチョコチップをトッピングすると値段も味も変わる場合、下記のように元のコーヒーを基本としたサブクラスを作っていく方法が考えられます。 // 基本のCoffee オブジェクト var Coffee = function()

                                            【JavaScript】デザインパターンを知ってみる。デコレータ編 | バシャログ。
                                          • Python: デコレータとコンテキストマネージャの両方として動作する API の作り方 - CUBE SUGAR CONTAINER

                                            以前、仕事でデータベースのトランザクションを管理する Python の API を考えているときに、同僚と「デコレータで作るべき」「いやコンテキストマネージャの方が扱いやすい」みたいなやり取りをしたことがあった。 でも、今考えるとどちらとしても動作するように作っておけばよかったんだよね。 ということで、今回はデコレータとしても動作するしコンテキストマネージャとしても動作するような API を作る方法について書くことにする。 補足しておくと、デコレータもコンテキストマネージャも対象となる処理の前後に特定の処理を挿入できるというところに共通点がある。 今回紹介する内容も、対象となる処理の前後に特定の処理を挿入するというものになっている。 サンプルコードその一 以下のサンプルコードでは、clamp() 関数がデコレータとしてもコンテキストマネージャとしても動作するように作られている。 clamp

                                              Python: デコレータとコンテキストマネージャの両方として動作する API の作り方 - CUBE SUGAR CONTAINER
                                            • 【PHP8.0】PHPでアトリビュート/アノテーション/デコレータが書けるようになる - Qiita

                                              Attributes v2というRFCが投票中です。 投票期間は2020/05/04まで、投票者の2/3の賛成で受理されます。 2020/04/27時点では賛成48反対1で、ほぼ間違いなく可決されます。 Attributes v2 Introduction このRFCは、クラス/プロパティ/関数/メソッド/引数/定数の宣言に、構造化されたアトリビュートをメタデータとして記述できるようにする提案です。 アトリビュートは、コードの宣言に直接設定ディレクティブを埋め込むことで定義されます。 同じような概念としてJavaのAnnotation、C#/C++/Rust/HackにおけるAttribute、Python/JavascriptにおけるDecoratorが存在します。 これまで、PHPではこのようなメタデータとしては非構造的であるdoc-commentsしか存在しませんでした。 しかしdo

                                                【PHP8.0】PHPでアトリビュート/アノテーション/デコレータが書けるようになる - Qiita
                                              • Nuxtでデコレーターを使わずTypeScriptを書いてみた | Mix Design

                                                こんにちわ、ななきです。 だいぶ前にVueをTypeScript化した的な記事書いたのですが、それから案件でもTS化したVueを使っていたのと最近の界隈の流れもありNuxtもTypeScript化してみました。 結果的にデコレータを使わずに、vuexもコンポーネントも型が効いており満足です。 ちなみにvuex部分にかんしてはこちらのリポジトリを参考にさせて頂きました。 コンポーネントのTS化 コンポーネントに関してはびっくりするほどやることないです。 $ yarn add ts-node $ yarn add -D @nuxt/typescript $ touch tsconfig.json $ nuxt build

                                                  Nuxtでデコレーターを使わずTypeScriptを書いてみた | Mix Design
                                                • Pythonのデコレータを理解するときに残したメモ - PYTHONIC BOOM BOOM HEAD

                                                  Pythonのデコレータ(decorator)を理解する 3 - -を1,2,3全て読んで、以前僕がデコレータを理解するために残したメモもこんな感じだったなというのを思い出した。ずっと記事にしようと思いつつ忘れてたんだけどせっかくなので加筆修正しつつ公開してみる。 引数無しのデコレータ デコレータとは、その名の通り元の関数を装飾するもの。別の言い方をすれば、元の関数そのものを弄ること無く挙動を変更するもの。 まずは単純なデコレータから。 def hello(function): def _hello(*args, **kw): result = function(*args, **kw) return "Hello, {0}".format(result) return _hello @hello def name(arg): """my docstring""" return arg #

                                                    Pythonのデコレータを理解するときに残したメモ - PYTHONIC BOOM BOOM HEAD
                                                  • Pythonのデコレータ(decorator)を理解する 3 - Soleil cou coup&#233;

                                                    承前:Pythonのデコレータ(decorator)を理解する 2 デコレータに引数を渡す 素晴らしい、ではデコレータ自身に引数を渡すにはどうしたらよいのだろうか? さて、デコレータは引数として関数を受け入れる必要があるのでちょっとやっかいだ。デコレータに直接デコレートされた関数-引数を渡すことはできないからだ。 解決を急ぐ前に、ちょっと復習をしよう。 # デコレータは'普通'の関数である def my_decorator(func): print "I am a ordinary function" def wrapper(): print "I am function returned by the decorator" func() return wrapper # そのため、なにも"@"など使わずに呼び出すことができる def lazy_function(): print "zzz

                                                      Pythonのデコレータ(decorator)を理解する 3 - Soleil cou coup&#233;
                                                    • Pythonのデコレータ(decorator)を理解する 2 - Soleil cou coup&#233;

                                                      承前:Pythonのデコレータ(decorator)を理解する 1 デコレータ詳説 先の例に対して、デコレータ構文を使うと次のようになる: @my_shiny_new_decorator def another_stand_alone_function(): print "Leave me alone" another_stand_alone_function() #出力: #Before the function runs #Leave me alone #After the function runs そう、これで全部、シンプルだ。@decoratorは単なる、 another_stand_alone_function = my_shiny_new_decorator(another_stand_alone_function) のショートカットにすぎない。Decoratorはデザインパ

                                                        Pythonのデコレータ(decorator)を理解する 2 - Soleil cou coup&#233;
                                                      • デコレータで楽にcProfileする - Qiita

                                                        そこそこの規模のライブラリ書いてると、プロファイルするとき毎回コマンドラインからスクリプトを実行したりunittestのsetUpとtearDown書くのが面倒だったりするので、デコレータを作っておきます。 import cProfile import pstats def profile(func): def _f(*args, **kwargs): pr = cProfile.Profile() pr.enable() print("\n<<<---") res = func(*args, **kwargs) p = pstats.Stats(pr) p.strip_dirs().sort_stats('cumtime').print_stats(20) print("\n--->>>") return res return _f 特定の関数やメソッドだけピンポイントでプロファイルでき

                                                          デコレータで楽にcProfileする - Qiita
                                                        • ログインが必要なメソッドを実装するための Google App Engine アプリ用デコレータ - present

                                                          Google App Engine アプリを作っていると、「ログインしていないときはログインページにリダイレクトする」コードをよく書きます。 class MainHandler(webapp.RequestHandler): def get(self): # ログインしていないときは、ログインページにリダイレクト if not users.get_current_user(): self.redirect(users.create_login_url(self.request.uri)) return self.response.out.write('Hello world!') ログインが必要なメソッドの先頭で、このコードを毎回記述するのは面倒です。かといって、共通化しようにも、ベースクラスを用意してヘルパーメソッドを定義するのはイマイチ。 そこで思いついたのが、Python のデコレー

                                                            ログインが必要なメソッドを実装するための Google App Engine アプリ用デコレータ - present
                                                          • TypeScriptによるデコレータの基礎と実践 - Qiita

                                                            はじめに アドベントカレンダーに参加した途端に仕事が忙しくなったため、死にそうになりながらこの記事を書いています。 早速ですがタイトルの通り「デコレータ」について少しまとめてみましょう。 書くこと デコレータの基礎 reflect-metadata 実践 公式 とりあえず何事も本家のドキュメントを見てみるのが一番 公式 公式の日本語訳 デコレータはJavaScriptのStage-2状態の機能であり、 今後仕様変更が入る可能性があります。 ドラフト状態の仕様についての詳しい内容は こことかここ! ↑の日本語訳サイトを読めば大体わかりますし こういった素晴らしい記事もあるので 本記事では簡単なおさらい程度にします。 デコレータとは デコレータとはクラスの宣言などにアタッチできる特別な宣言です。 クラス宣言 メソッド アクセサ(get, set) プロパティ メソッド引数 ↑これらに適用するこ

                                                              TypeScriptによるデコレータの基礎と実践 - Qiita
                                                            • [Python] 怖くない!デコレータ

                                                              メリークリスマス!全然関係ないけどデコレータの記事頑張って書きました。 できるだけわかりやすいように意識して書いたつもりです。 基本デコレータって何「関数の処理を修飾(デコレート)する」、つまり関数の前後に処理を付け加える技術という説明が多いように思います。 決して間違ってはいませんが、私は正確ではないと思っています。 多くの人が思っている以上にデコレータとは簡単なものです。あまり難しく考えないでください。 デコレータの動作を一言で表すなら単に 対象オブジェクトを差し替える 技術です。 デコレータであるための条件「引数を1つ受け取る呼び出し可能オブジェクト」がデコレータの最小の要件です。 以下を見てください。 >>> # このように「何もしない」かつ「何も返却しない」関数でも >>> def deco(f): ... pass >>> # 定義時にエラーは出ない。つまりデコレータとしての要

                                                                [Python] 怖くない!デコレータ
                                                              • [Python入門]デコレーターの基礎

                                                                デコレーターとは 本連載の第15回「ローカル関数とラムダ式」では関数を受け取る関数や、関数を戻り値とする関数を取り上げた。今回紹介するデコレーターとは、基本的には関数を受け取り、関数を戻り値とする関数のことだ(そうではない場合もある。後述)。クラスを受け取り、クラスを戻り値とする関数やクラスも書けるが、本稿では関数を受け取り、関数を戻り値とする基本的なデコレーターだけを紹介する。 「関数を受け取り、関数を戻り値とする関数」というと難しく感じるかもしれないが、デコレーターの使用例は第29回「クラス変数/クラスメソッド/スタティックメソッド」の「クラスメソッド」で既に紹介している。デコレーターを使うだけなら、以下のように「@デコレーター」(デコレーター式)を使って関数を修飾(デコレート)するだけでよい(以下の例はメソッドだが、使い方は同じ)。

                                                                  [Python入門]デコレーターの基礎
                                                                • Python デコレータ再入門  ~デコレータは種類別に覚えよう~ - Qiita

                                                                  Pythonのアットマーク(@)を使った記法であるデコレータについてまとめる。難しいと思われているかもしれないデコレータだが、デコレータの種類(パターン)を意識することが理解の近道だと思ったので今回は種類別にデコレータの簡単な実装例をあげて解説をしていこうと思う。 対象者 Python のデコレータを学んだことがあるがたまに分からなくなる デコレータを自作しろと言われたらスラスラかけるか不安 知っていると良いこと 関数のスコープ 第一級関数 *args , **kwargs のような記法 デコレータ関数の種類分け 以下2つの要因でデコレータ関数の種類分けが可能だと思われる。 引数を取るか否か ラッパー関数を返すか否か よって組み合わせから計4つのパターンが考えられるが、今回は "引数を取らずラッパー関数を返さないデコレータ"を除いた3つを紹介する。1つ除外する理由は簡単すぎて意味がなさそう

                                                                    Python デコレータ再入門  ~デコレータは種類別に覚えよう~ - Qiita
                                                                  • Microsoft、プログラミング言語「TypeScript 5.0」を正式に公開、デコレーターが標準機能に

                                                                    「TypeScript 5.0」では、「デコレーター(Decorators)」の機能に正式に対応するようになった。デコレーターは、クラスの実装をほとんど変更することなく、クラスやフィールド、メソッドなどを拡張、上書きする外部関数を利用可能にする機能。一般に言うDI(Dependency Injection:依存性の注入)を実現する機能だ。 デコレーター関数を利用するには、デコレーター関数を実装してから、クラスを実装したコード内のフィールドやメソッドを記述した部分の直前で「@関数名」と記述すれば良い。デコレーターの機能を利用して、クラスやフィールド、メソッドの機能を拡張、上書きするコードを外部関数として分離することで、再利用しやすくなる。 以前のバージョンでもデコレーターは使用可能だったが、「実験的」な位置付けにとどまっており、使用するにはコンパイラ実行時に「--experimentalDe

                                                                      Microsoft、プログラミング言語「TypeScript 5.0」を正式に公開、デコレーターが標準機能に
                                                                    • Microsoft、「TypeScript 5.0」を正式公開 ~よりコンパクト、シンプル、高速に/ECMAScriptで採用が予定されている「デコレーター」に対応するなどの新機能も

                                                                        Microsoft、「TypeScript 5.0」を正式公開 ~よりコンパクト、シンプル、高速に/ECMAScriptで採用が予定されている「デコレーター」に対応するなどの新機能も
                                                                      • Python: 色々なデコレータの作り方と使い方、そして本質

                                                                        Python にはデコレータという特徴的な構文がある。 この構文を使うと GoF のデザインパターンの一つ、デコレータパターンが作りやすくなる。 デコレータパターンは、ある関数やメソッドの処理内容のラッピングや、関数やメソッドのマーキングを通して様々な用途に使える。 まずは、デコレータの最も基本的な使い方を以下に示す。 デコレータを使って修飾対象の処理をラッピングする。 サンプルコードでは ‘main’ 関数を 'decorator’ デコレータで修飾することで、元の処理内容に 'print’ 関数の実行を挿入している。 #!/usr/bin/env python # -*- coding: utf-8 -*- def decorator(func): def _decorator(*args, **kwargs): print('decorate') return func(*args,

                                                                          Python: 色々なデコレータの作り方と使い方、そして本質
                                                                        • Python のデコレータ式 (2) - デコレータに引数があり、複数のデコレータを適用する場合

                                                                          Python のデコレータ式 (1) のつづき 1. 前回のデコレータ式の復習 前回は、引数のないデコレータ式について試した。今回はデコレータ式に引数がある場合について考える。 最初に、引数のないデコレータについて復習する。 def D(f): def _(): print "*--" * 10 f() print "--*" * 10 return _ @D def hoge(): print "hoge" ##hoge = D(hoge) hoge() コメントアウトしてあるコードは、デコレータ式を使わない場合の書き方。デコレータ式は、このシンタクティックシュガー。 デコレートしたときに、関数 D が実行され、デコレートした関数をラップした関数が返される。上記では、デコレートされた後、関数 hoge は、hoge 関数がセットされた、関数 D にネストされた `_ 関数’ を指す。 2

                                                                          • CDIによるデコレータ - Challenge Engineer Life !

                                                                            先日書いた「プリミティブ型もCDIでInject」に続いて、今回もCDIの中で知らなかったネタなのですが。 CDIの仕様の中で、@Decoratorを利用してGoFのデザインパターンにあるデコレータパターンを記述する方法があるとのこと。 デコレータパターンについては 12. Decorator パターン | TECHSCORE(テックスコア) 矢沢久雄の早わかりGoFデザインパターン(8) - ITpro 辺りがわかりやすいかと。 簡単に書いてみたら、あっさり動きました。 こんなインタフェースを用意して package jp.co.hoge.decorator; public interface HogeExecutor { public void execute(); } 標準出力で「hogehoge」と出すだけの実装クラスを定義します package jp.co.hoge.decora

                                                                              CDIによるデコレータ - Challenge Engineer Life !
                                                                            • [Python] デコレーターに入門する - YoheiM .NET

                                                                              こんにちは、@yoheiMuneです。 Pythonのコードで時々ある@xxxというアノテーションがついた関数がありますが、そのアノテーションをデコレータと言います。今日はその使い方や定義方法などブログに書きたいと思います。 目次 デコレーターとは デコレーターとは、以下のように関数に@xxxをつけるものを指します。 @document_it def add_ints(a, b): return a + b 上記の@document_itがデコレータで、これを付与することでadd_ints関数の中身を変えずして振る舞いを変えることができます。FlaskなどのWebアプリケーションでは、@app.route('/')などでルーティングにもちいられています。 このブログでは、デコレータの定義方法や使い方を書きたいと思います。 デコレーターを定義する デコレーターに利用する関数は、以下のように定

                                                                                [Python] デコレーターに入門する - YoheiM .NET
                                                                              • python デコレータを使って例外処理をモジュール化する - fakatatuku’s blog

                                                                                pythonで普通に例外処理を書くと、以下のようになる。 def hoge(*args): try: # 処理 except Exception as e: # 例外処理 return def fuga(*args): try: # 処理 except Exception as e: # 例外処理 return def piyo(*args): try: # 処理 except Exception as e: # 例外処理 return 例外処理の内容が全て同じである場合(例えばログに吐き出すとか)、かなり冗長である。 そこでデコレータを使用すると以下のように書ける。 def exception(func): def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except Exception as e: # 例外

                                                                                  python デコレータを使って例外処理をモジュール化する - fakatatuku’s blog
                                                                                • Pythonデコレータが熱い - なんたらノート第三期ベータ

                                                                                  今回は decorator 3.4.0 : Python Package Index のお話。 Pythonのデコレータは便利です。関数の実体定義直後に、任意のフィルタをその関数に施すことができます。 def special(func): def invoker(*args, **kw): return "special " + func(*args, **kw) invoker.__name__ = func.__name__ invoker.__dict__.update(func.__dict__) invoker.__doc__ = func.__doc__ invoker.__module__ = func.__module__ return invoker #改変した関数を返す @special def myproc(): return "hoge" #ここで myproc =

                                                                                    Pythonデコレータが熱い - なんたらノート第三期ベータ