タグ

metaに関するshimizukawaのブックマーク (5)

  • クロージャのひみつ - atsuoishimoto's diary

    やっとPythonのクロージャの仕組みを少しは理解した件 で、清水川先生がクロージャを返すとき実行中のフレームオブジェクトが保存されるのか?という疑問を呈されている。 結論から言うと、フレームオブジェクトは保存されず、クロージャが必要とするオブジェクトだけが残される。この辺の仕組みがを簡単に解説してみよう。尚、以下の解説はPython2のものであり、Python3については未調査である。 例として、こんな関数を考えてみよう。 def func(): a = 100 b = 200 c = 300 def func2(): return a, b a = 400 return func2 この例では、func2 は func のローカル変数 a と b を参照するクロージャである。実行すると、(400, 200) を返す。 さて、関数を実行中、そのローカル変数は "セル"(cell)というオ

    クロージャのひみつ - atsuoishimoto's diary
    shimizukawa
    shimizukawa 2010/10/07
    すっごい丁寧に説明書いてある!絵まで付いてるんですけど!
  • スタティックメソッドは要らない子? - atsuoishimoto's diary

    Pythonでは、クラス内で定義することの出来るメソッドが三種類用意されている。メソッド・クラスメソッド・スタティックメソッドの3種類だ。それぞれどんな特徴を持っているのだろうか? メソッド まず、メソッドはおなじみのインスタンスメソッドで、第一引数としてインスタンスを受け取り、呼び出す時には必ずインスタンスが必要となる。 class Foo(object): # メソッド def method(self, arg): pass Foo().method("arg") #OK Foo.method("arg") #これはエラー クラスメソッド クラスメソッドは第一引数としてクラスオブジェクトを受け取り、インスタンスが無くとも呼び出すことが出来る。 class Foo(object): # クラスメソッド @classmethod def clsmethod(cls, arg): pass

    スタティックメソッドは要らない子? - atsuoishimoto's diary
    shimizukawa
    shimizukawa 2010/08/09
    クラスにもインスタンスにも依存しないメソッドという表明、くらいの意味しか思いつかないですねー。
  • atsuoishimoto's diary

    あたらしく自前のBlog https://aish.dev をつくりましたので、こちらはもう更新しないつもりです。 https://aish.dev は、自作のMiyadaiku というSSGを使い、Github actionを使ってGithub pagesで公開しています。 編集環境としては専用のJupyterLab環境を用意して、テキストを編集して保存すると自動的に確認用のページがビルドされ、編集が終わったらgit commit して git push すると公開される、というプログラマにはとてもフレンドリな環境になっています。giはJupyterLabの拡張モジュールから操作できますし、ブラウザ上のターミナルからも扱えます。 リモート環境ながらレスポンスは良好だし、Jupyter NotebookでBlogを書けるのがほんとに便利です。「fotolife記法」なんかの独自記法に悩まさ

    atsuoishimoto's diary
    shimizukawa
    shimizukawa 2010/08/09
    classにもinstanceにも依存しないことを明確にするという表明、くらいしか思いつかないですねー。
  • SOLVING THE METACLASS CONFLICT « Python recipes « ActiveState Code

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 import inspect, types, __builtin__ ############## preliminary: two utility functions ##################### def skip_redundant(iterable, skipset=None): "Redundant items are repeated items or items in the original skipset." if skipset is None: skips

    shimizukawa
    shimizukawa 2010/07/09
    Pythonのメタクラス競合の解決
  • Python プログラミング

    C++ のクラスと Python のクラス C++Python の大きな違いは、前者がコンパイラ向け、 後者がインタプリタ向けの言語であるということ。あたりまえだけど。 C++ では「クラス」はあくまで、ヘッダファイルなどでの「定義」であって、 コンパイラにかけるときには、実際にその定義されたコードが実行される ことはない。これもあたりまえ。 一方、Python はインタプリタなので、「クラス」文はいきなり実行されている。 もうちょっと具体的に言うと、: 1: class foo(object): 2: def bar(self): 3: print 'Hello, world!!' 4: 5: x = foo() 6: x.bar() 上記のような Python のプログラムがあったとき、C++ の感覚だと、 5行目から実行されているような気がする。で、foo() で foo クラ

    shimizukawa
    shimizukawa 2010/07/08
    メタクラスについて色々例が載ってる
  • 1