タグ

ブックマーク / yoshiyoshifujii.hatenablog.com (4)

  • エキスパート Python プログラミング メモ Vol.7 - 毎日Learning

    2.3.4 プロキシ プロキシデコレータは関数にタグをつけたり、グローバルな仕組みへ登録したりします。 たとえば、実行中のユーザーごとにコードへのアクセスを保護するセキュリティレイヤは、呼び出し可能なオブジェクトに関連づけられたアクセス許可情報を利用する、集中制御型チェッカーとして実装することができます。 はい。いきなり文章から読解できません。コードを見てみましょう。 >>> class User(object): ... def __init__(self, roles): ... self.roles = roles ... >>> class Unauthorized(Exception): ... pass ... >>> def protect(role): ... def _protect(function): ... def __protect(*args, **kw): .

    エキスパート Python プログラミング メモ Vol.7 - 毎日Learning
    shimizukawa
    shimizukawa 2010/12/04
    すいませぬー > はい。いきなり文章から読解できません。
  • エキスパート Python プログラミング メモ Vol.6 - 毎日Learning

    デコレータの一般的なパターンの続き。 今日はキャッシュデコレータについて。 2.3.3 キャッシュ キャッシュデコレータは引数チェックによく似ていますが、出力が内部状態の影響を受けないというケースに限定して使用されます。 出力が内部状態の影響を受けないケースってよう分からんちん。 内部状態の影響がなければ、引数の集合から、必ず一意な結果が導き出されます。 このプログラミングスタイルは関数型プログラミングの特徴になっており、入力値の集合が有限なときに使用されます。 あー。関数型プログラミングか。いつ呼び出しても結果は常に同じっていうあれのことか。詳しくは知りませんが。 つまりそういう関数に限定して使用しようねってことか。(使用しようね…ぶふー) キャッシュデコレータは、出力値とその出力を計算するのに必要だった引数を一緒に保管します。 へー。 2回目以降の呼び出しでは計算済みの値をそのまま返し

    エキスパート Python プログラミング メモ Vol.6 - 毎日Learning
    shimizukawa
    shimizukawa 2010/12/04
    シングルトンパターンとメモ化は違うぜ > シングルトンパターンやったかに似てるな。
  • エキスパート Python プログラミング メモ Vol.5 - 毎日Learning

    2.3.1 デコレータの書き方 の続き… サブ関数に対して、wrapperのような一般名詞の代わりに _mydecorator のような明示的な名前をつけるのが良いプラクティスです。 その処理過程でエラーが発生したときに、トレースバックが読みやすくなり、デコレータの内部をデバッグすればいい、ということがすぐにわかるからです。 なるほど。そのほうが分かりやすいね。 デコレータに引数が必要なときは、2重にラッピングする必要があります。 はい。 def mydecorator(arg1, arg2): def _mydecorator(function): def __mydecorator(*args, **kw): # 実際の関数を呼び出す前に行う処理 res = function(*args, **kw) # 呼び出し後に行う処理 return res return __mydecorat

    エキスパート Python プログラミング メモ Vol.5 - 毎日Learning
    shimizukawa
    shimizukawa 2010/11/24
    デコレータまわりの独習メモ2
  • エキスパート Python プログラミング メモ Vol.4 - 毎日Learning

    かなり間が空いてしまった。途中、浮気(Slim3)を読んだりしてたし…。 今日から毎日4ページずつ読んではブログに書くようにしよう。 4ページが無理っぽかったら、3ページになるかもしれない…。 2.3 デコレータ デコレータはPython 2.4で追加された構文で、関数やメソッドのラッピング(受け取った関数を拡張して返す)処理の見た目をわかりやすくします。 この構文は、クラスメソッドや静的なメソッドを定義する際に、メソッド定義の前の行にすっきりと書けるようにしたい動機から追加されました。 デコレータ導入以前は、次のような構文を使用していました。 >>> class WhatFor(object): ... def it(cls): ... print ('work with %s' % cls) ... it = classmethod(it) # クラスメソッドにする ... def

    エキスパート Python プログラミング メモ Vol.4 - 毎日Learning
    shimizukawa
    shimizukawa 2010/11/24
    デコレータのあたりの独習メモ
  • 1