並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 38 件 / 38件

新着順 人気順

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

  • Pythonを会得する考え方やポイント5選! 『パーフェクトPython』著者が魅力を語る! - FLEXY(フレキシー)

    ※本記事は2020年4月に公開した内容です。 株式会社ディー・エヌ・エーのシステム本部CTO室の露木誠です。PythonやDjangoについて執筆した『パーフェクトPython』や『Django×Python』などの著書が技術系出版社から数冊出版されています。DjangoのAUTHORSファイルにも実は名前が掲載されています。 本記事では、Pythonを始めたいと思っている方向けに、Pythonの魅力をお伝えできればと思います。知っておきたいPythonの言語仕様や特徴的な考え方をご紹介しますので、参考にしてください。 Python関連のエンジニア案件を見てみる 自己紹介とPython、Djangoに関わる活動について ディー・エヌ・エーのCTO室に所属、元々は異業種からIT業界に参入 現在は、株式会社ディー・エヌ・エーのシステム本部CTO室で、エンジニア組織の課題解決を主な活動として、日

      Pythonを会得する考え方やポイント5選! 『パーフェクトPython』著者が魅力を語る! - FLEXY(フレキシー)
    • 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
        • Python入門:デコレータとは

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

          • Python decorator

            python のデコレーター構文 @decorate 解り難い @decorate 構文 Python のデコレーターは理解するのが厄介です。Python のデコレーターは syntax sugar の機能と closure の機能の二つを使って関数オブジェクトを修飾する構文です。でも closure の概念がない C/C++ や Java などの 言語から python も使うようになった者に、三重にネストした関数と @decorator 構文を組み合わせたコード例を使って解説されたのでは脳みそが沸騰するだけです。 私は @decorator を使ったコード例の python virturla machine コードを追跡することで、やっとこさデコレーターを理解しました。私の味わされた苦労を軽減してもらうため、この web page をまとめてみます。 デコレーターを理解した後で考え直し

            • 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フレームワーク使うなら知っておきたいデコレータ - 神様なんて信じない僕らのために
                  • http://www17.atpages.jp/~lambda7/py/decorator.html

                    • 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
                        • Angular v6で導入されるTree-Shakable DIの紹介 - 余白

                          追記: 最新では scope が providedIn に変わってます。 github.com Angular v6では、これまでのDependency Injectionの仕組みをTree-Shaking可能にするためのオプション機能を追加します。 概要を説明するために簡単なスライドを作りました。 現状の問題 現在のDependency Injectionの仕組みでは、Injectionされるサービス(Injectable)はProviderの登録と、Injectorからの参照の2箇所で、静的に参照される必要があります。 たとえどこからもInjectionされないサービスでも、Providerを登録する時点でNgModuleからの参照が発生するため、ビルド時に不要なコードをふるい落とすTree-Shakingの対象にすることができませんでした。 新しいアプローチ Angular v6では

                            Angular v6で導入されるTree-Shakable DIの紹介 - 余白
                          • IBM Developer

                            IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

                              IBM Developer
                            • http://morchin.sakura.ne.jp/effective_python/decorator.html

                              >>> def deco(func): ...     return 'Hello, world!' ... >>> @deco ... def foo(): ...     print "I'm never called." ... >>> foo 'Hello, world!' 関数fooが関数decoの戻り値により'Hello, world!'という文字列に置き換わっている。 但し、通常デコレータの期待される用途としては、関数に機能を追加することである。 以下の例では関数fooに実行時間を表示する機能を追加している。 >>> import time >>> >>> def profile(func): ...     def wrapper(*args, **kw): ...         timer = time.clock ...         t0

                              • 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
                                    • [Python] 怖くない!デコレータ

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

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

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

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

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

                                            Python デコレータ再入門  ~デコレータは種類別に覚えよう~ - Qiita
                                          • How do I make function decorators and chain them together?

                                            If you are not into long explanations, see Paolo Bergantino’s answer. Decorator Basics Python’s functions are objects To understand decorators, you must first understand that functions are objects in Python. This has important consequences. Let’s see why with a simple example : def shout(word="yes"): return word.capitalize()+"!" print(shout()) # outputs : 'Yes!' # As an object, you can assign the

                                              How do I make function decorators and chain them together?
                                            • Live Nude Cams 😍 - Ooh Cams

                                              Live nude webcam chat IntroductionLive nude webcam chat has become increasingly popular as a form of online entertainment and communication. This unique platform allows individuals to connect with models in real-time, engaging in intimate experiences through video chat. With the advancements in technology and the widespread availability of high-speed internet connections, live nude webcam chat has

                                              • 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
                                                • ES2015~2017に無い初見殺しコード3つ紹介 - Qiita

                                                  皆さんもうES2015は大丈夫でしょうか?(私はいまだに理解が怪しいものがあります) 今回はES2015にもES2016にもES2017にもまだない、 だけどよく見る構文を3つ紹介したいと思います。 Rest/Spread Properties (stage-3) spread operatorのオブジェクト版(初見殺しと言いつつ、1つめは大したことなかった)。 配列や関数の引数に対する(...)はES2015で追加されたんですが、 オブジェクトに対する(...)はまだ正式な仕様になっていません。 (...)をオブジェクトに対して使うと、以下のようなコードが書けるようになります。 // Rest Properties let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; x; // 1 y; // 2 z; // { a: 3, b: 4 } /

                                                    ES2015~2017に無い初見殺しコード3つ紹介 - Qiita
                                                  • Pythonのデコレータをイチから展開・解説してみた 【あれ? ただのクロージャじゃん】編 - すなぶろ

                                                    前回のコードは思い返すだけでも寒気がするほどひどいものでした。そこで今回はPython固有の機能であるデコレータを使って、ちょっとPythonっぽいコードに変更します。 sandmark.hateblo.jp このデコレータ、LispやHaskellのように関数や処理を頻繁に渡す言語に慣れ親しんだ人なら比較的すぐに理解できると思うのですが、そうでない場合は難しく感じるかもしれません。しかし理解してしまえば「なんだそんなことか」といったものなので、もちろん乱用は禁物ですが、適宜使っていくことで明らかに読みやすく宣言的なコードを書くことができます。参考: PEP 318 再掲:リファクタリング対象 「デコレータとはなんぞや」というのは検索すればいくらでも出てきますので、今回ハマった点について書いていきます。また、デコレータが行うこと、行った結果関数がどう変更されるか、も書いてみようかと。 では

                                                      Pythonのデコレータをイチから展開・解説してみた 【あれ? ただのクロージャじゃん】編 - すなぶろ
                                                    • sh1.2 pyblosxom : デコレータを使いたい

                                                      python2.4から導入されたデコレータ。これまで自分の人生には関係ないものとしてス ルーしてきたのですが、ここ何日か突然デコレータ使ってみたい病に掛かってしまった ので調べてみました。 IBM 魅力的な Python: デコレーターで魔法を身近に - Japan ASPN: Python Cookbookのdecoratorでの検索結果 最初なんのことやら全然わからなかったのですが、基礎的な部分に関しては、こういう ものかな?というのがなんとなく理解できたような気がするのでメモ。 デコレータ関数が引数を受け取らない場合 @deco def test(a,b): print a,b みたいな場合、デコレータ関数deco()の基本は下記のような感じ。 def deco(デコレータ対象となる関数のポインタ): def sub_deco(デコレータ対象となる関数の引数): //なんか処理 re

                                                      • TypeScriptのDecoratorを使ってserializableを実現する

                                                        JavaのSerializableのようなものをJavaScriptで! デコレータ使ってJSONのstringify/parseでオブジェクトを簡単に復元できるようにしてみる。 toJSON 前知識。 JavaScriptの仕様として、オブジェクトにtoJSONを実装しておくとJSON.stringifyの時に参照してくれる。 別のオブジェクト内部にあってもOK。 var obj = { a: 1, b: { c: 1, toJSON: function(){ return 'hoge'; } } }; JSON.stringify(obj); // => "{"a":1,"b":"hoge"}"

                                                          TypeScriptのDecoratorを使ってserializableを実現する
                                                        • [メモ] Pythonのデコレータ – taichino.com

                                                          出てくる度に調べる割に、いつまで経っても覚えられなかったデコレータですが、今回こそ仕留める為にメモエントリーです。まずよく見かけるのは関数の時間を計測するという例ですね。僕はこの形だけを何となく覚えては忘れていました。 #!/usr/bin/python # -*- coding: utf-8 -*- import time # デコレータ定義 def time_func(func): def decorator(*args): start = time.time() ret = func() print '%s was executed, it took %s sec' % (func.func_name, time.time() - start) return ret return decorator # デコレータ適用 @time_func def test(): time.slee

                                                          • python デコレータを使ってロギング処理を楽にする - fakatatuku’s blog

                                                            from datetime import datetime def logging(func): def wrapper(obj, *args, **kwds): print("{} {} {} {} args={} kwds={}".format( datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "INFO", func.__qualname__, "START", args, kwds)) rtn = func(obj, *args, **kwds) print("{} {} {} {} return {}".format( datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "INFO", func.__qualname__, "END", rtn)) return rtn return wrappe

                                                              python デコレータを使ってロギング処理を楽にする - fakatatuku’s blog
                                                            • クラス(class) « python練習帳

                                                              Pythonの世界は、整数などの単純な値も含め、すべての値はobjectクラスを継承したクラスのインスタンスでできています。 >>> type(1) <type 'int'> >>> isinstance(1, object) True >>> type("hage") <type 'str'> >>> isinstance("hage", object) True

                                                              • PythonのデコレータでLambdaのコードをクリーンに保つ!! | DevelopersIO

                                                                サーバーレスアプリの開発では「フレームワークを使わない」という選択肢が採用されることも多いと思います。 フレームワークに頼らずにロジックを共通化し、Lambdaのコードをクリーンに保つ手法について調査したのでご紹介します。 はじめに サーバーレス開発部@大阪の岩田です。 PythonにはDjangoやFlaskといったメジャーなアプリケーションフレームワークが存在しますが、サーバーレスアプリの開発においては「フレームワークを使用しない」という選択肢が採用されることも多いと思います。 フレームワークを使用しない場合、フレームワークがやってくれるような処理も全て自前で実装する必要があるため、自然とLambdaのコードが肥大化しがちです。 小規模な開発であれば、あまり問題になりませんが、中規模以上の開発になってくると、フレームワークを利用しないことの辛身が出てきます。 コードをクリーンに保つため

                                                                  PythonのデコレータでLambdaのコードをクリーンに保つ!! | DevelopersIO
                                                                • デコレータの使いどころ - Qiita

                                                                  デコレータの書き方はわかった。 デコレータとはその名の通りデコレートするものだ。 何をデコレートするのかといえばそれはもう関数、関数である。 あとメソッドである。 俺はわかった。たいへんだ。デコレータをわかってしまった。 タケシはそう呟くと弾かれたように走りだした。 だが信号が点滅し始めたので止まった。 そう、彼は交通ルールを守るのだ。 そして暇を持て余すように考える。 書けるようになったら使っていきたいのが人情というものだ。 だが、実際使ってみたいと思うと、いまいち使いどころがわからない。 有効な使い道が思い浮かばないのだ。 そんな人。 ハイ!俺もわかりません! いや、でも、ちょっとわかってきたかも。 なぜデコレータを使うのか なぜデコレータを使うのか? 好ましくない冗長性の排除やDRYのためにデコレータを使う 読みやすさの向上のためにデコレータを使う 思いつくものとしてこういうのがあり

                                                                    デコレータの使いどころ - Qiita
                                                                  • 便利なPythonライブラリ(5)retry

                                                                    デコレータつけるだけで、リトライしてくれるという便利ライブラリ。 インストール $ pip install retry サンプル 失敗するかもしれない不安定な関数に@retryをつけると成功するまで実行してくれる。 from retry import retry from random import randint def unreliable_func(x): if randint(0, 10) == 0: return x*x raise Exception("Sorry, I'm busy.") @retry() def solve(x): return unreliable_func(x) def main(): ret = solve(10) print (ret) if __name__ == '__main__': main() もう少し実用的な例。 クローラを書いた時に、エ

                                                                    • Pythonで classmethod、staticmethod を使う - Qiita

                                                                      いつ使うと良いか インスタンス変数やインスタンスメソッドにアクセスしないとき(メソッド内でselfを使わないとき)は classmethod、staticmethodを使おう。 classmethod: クラス変数にアクセスすべきときや、継承クラスで動作が変わるべきときは classmethodを使おう。 staticmethod: 継承クラスでも動作が変わらないときはstaticmethodを使おう どちらもデコレーターで定義できる。classmethodでは第一引数にclsを与えて定義する。 例 class Student: def __init__(self, name, school): self.name = name self.school = school self.marks = [] def average(self): """平均成績を返す インスタンス変数にアクセスし

                                                                        Pythonで classmethod、staticmethod を使う - Qiita
                                                                      • 高階関数としてのデコレータに関する考察 - saito’s blog

                                                                        デコレータはPython2.4で追加された構文で、関数やメソッドのラッピングを行ないます。 @deco1 def foo() pass @deco2(args) def bar() pass このプログラムは以下のプログラムと等価です。 def foo() pass foo = deco1(foo) def bar() pass bar = deco2(args)(bar) この構文は静的メソッドやクラスメソッドの定義を分かりやすく書きたいという動機から追加されました。 静的メソッドやクラスメソッドの定義は、デコレータ導入以前では以下のように書かれていました。 class C(object): def foo(cls, x): pass foo = classmethod(foo) def bar(y): pass bar = staticmethod(bar) デコレータ構文を使用すると

                                                                          高階関数としてのデコレータに関する考察 - saito’s blog
                                                                        • Pythonのクラスメソッド定義の整理 - zzlog

                                                                          クラスメソッドとは? クラスメソッドはクラス内で定義されたメソッドで、かつインスタンス化しなくても呼び出すことができます。 クラス内で定義されるメソッドにはもうひとつ、インスタンスメソッドがあります。インスタンスメソッドは、インスタンス化されて初めて呼び出すことが出来ます。 インスタンスメソッドの定義と呼び出し インスタンスメソッドの定義は特別なことは何もない、普段定義している通りです。 class Spam(): def say_spam(self): return "I'm a spam" この例では、say_spamがインスタンスメソッドに当たります。 say_spamメソッドは次のように呼び出します。 s = Spam() # ここでSpamクラスをインスタンス化 print s.say_spam() # インスタンス化したsオブジェクトからsay_spamメソッドを呼び出し #

                                                                            Pythonのクラスメソッド定義の整理 - zzlog
                                                                          • Pythonのデコレータの基礎と応用

                                                                            アドベントカレンダー「ほぼ横浜の民」の3日目の記事です。 今年は Python のデコレータについて書いています。かなり雑に説明すると、デコレータとは関数についている @staticmethod や @classmethod のことです。OSS を見ているとカスタムのデコレータもあって、これってどのように機能しているんだろう?と気になることが多くなってきたので少し勉強してみました。 この記事を読んでわかること そもそもデコレータって何? デコレータってどうやって定義するの? 引数付きのデコレータはどうやって定義する? 引数付きのデコレータはなぜネストしている? なぜ functools.wraps を使ってデコレータを定義する必要があるの? 機械学習関連の OSS ではどのように使われている? デコレータとは? デコレータは、関数をラップすることで別の関数を返却する関数です。実際にはクラス

                                                                              Pythonのデコレータの基礎と応用
                                                                            • FlaskでシンプルにContent-Typeをチェックする(@content_type) - Qiita

                                                                              1. はじめに 前回の記事ではflask、cerberus、peeweeを利用したマイクロサービスのコンセプトアプリを作成しました。今回はその際省略したflaskによるContent-Typeのチェック方法について説明します。また、Content-Typeをチェックする関数デコレータの作り方についても紹介したいと思います。 1.1. 今回紹介する@content_type関数デコレータの仕様 flaskのroute()関数デコレータを付与する関数(つまりREST API)に対して付与する 許可するContent-Typeを関数デコレータの引数に指定する HTTPリクエストヘッダのContent-Typeと引数で指定された値を比較する 異なる場合はHTTPステータスの400エラーをレスポンスとして返却する # rest api @app.route('/questions', methods

                                                                                FlaskでシンプルにContent-Typeをチェックする(@content_type) - Qiita
                                                                              1