タグ

pythonとオブジェクト指向に関するtomio2480のブックマーク (4)

  • Pythonのクラス変数とインスタンス変数の違い - logging.info(self)

    動機 Pythonの言語リファレンスとか他の人のコードみてたらクラス変数とインスタンス変数の違いがよくわからなくなったのでメモ。 というか、http://d.hatena.ne.jp/Ponsuke/20090128/1233115400にインスパイアされて書きました。 今まで 自分が最初に触ったオブジェクト指向言語はJavaで、そっちの概念を引きずったままPythonをやり始めたので当然クラス変数とインスタンス変数は別々に宣言するものなんだろという考えていた。 つまり class Hoge(object): FOO = int() とすればクラス変数FOOが宣言されたことになりインスタンス変数は宣言されてないものだと思ってた。 そしてPythonでインスタンス変数を使うには class Hoge(object): def __init__(self): self.FOO = int()

    Pythonのクラス変数とインスタンス変数の違い - logging.info(self)
  • インスタンスメソッド・クラスメソッド・スタティックメソッド - PASL

    Pythonで扱われるこれらのメソッドの違いを調べてみた。結論から言うと、これらのメッソドの違いは「インスタンス変数にアクセス可能か」、「継承時に親・子クラスのどちらのクラス変数を参照するか」の2つの観点で異なる。 メソッド インスタンス変数へのアクセス どちらのクラス変数を参照するか インスタンスメソッド 可 親 クラスメソッド 不可 子 スタティックメソッド 不可 親 ここで注意したいのは「親クラス」のクラス変数を変更すると「必ず」子クラスのクラス変数が変更されるということ。また当然のこととして、子クラスのインスタンス変数変更が親クラスのインスタンス変数を変更したりはしない。 具体例をつくってみた。method_example.pyというファイル名で保存。 class Boku(object): # これはクラス変数 subject = "ぼくは" name = "ドラえもん" def

    インスタンスメソッド・クラスメソッド・スタティックメソッド - PASL
  • Python のクラスメソッド – デコレータ @classmethod, @staticmethod を使って

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

    Python のクラスメソッド – デコレータ @classmethod, @staticmethod を使って
  • Pythonにおけるクラスの静的メンバについて - 試験運用中なLinux備忘録・旧記事

    はじめに 以前「オブジェクト指向についての覚え書きとPython上のクラスと組み込みオブジェクトについて」という記事も書いている通り、オブジェクト指向やその中のクラス設計などについてはまだよく分かっていない部分がかなり多く、記事においても誤りが含まれている可能性はある。 そのような中でクラスの「静的メンバ」というものについて幾つか分かったことがあるので、例とともにここにまとめておくことにする。 概要 静的メンバ変数(静的属性/静的attribute) クラスの中にあるメンバ変数は、多くの場合 class ClassName: [以下メンバの定義...] のようにして定義したクラスに対して obj = ClassName() のようにして生成した各オブジェクト(インスタンス)に属するデータ*1を持っていることになる。しかし、Python以外の幾つかの言語では「static」を付けてメンバ変

    Pythonにおけるクラスの静的メンバについて - 試験運用中なLinux備忘録・旧記事
  • 1