タグ

2016年9月6日のブックマーク (4件)

  • Pythonのデコレータ(decorator)を理解する 3 - Soleil cou coupe

    承前: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 coupe
  • Pythonのデコレータ(decorator)を理解する 2 - Soleil cou coupe

    承前: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 coupe
  • Pythonのデコレータ(decorator)を理解する 1 - Soleil cou coupe

    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 coupe
  • 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