2011-01-01から1年間の記事一覧

初めてのPython(26章後編)

スタティックメソッドとクラスメソッド 2.2でstaticmethod, classmethodというビルドインオブジェクトが追加され、 呼び出しにインスタンスを必要としないスタティックメソッド、クラスメソッドが定義できる。 定義可能なメソッドは以下の3種類 インスタン…

初めてのPython(26章中編)

__getattr__ / __setattr__ / __getattribute__ __getattr__は、オブジェクトツリーに存在しない属性へのアクセスがあった時だけ呼び出される。 __setattr__は、オブジェクトツリーに存在するしない関わらず呼び出される。 [kobakoba0723@fedora13-intel64 ~…

UnicodeEncodeError

XMLを解析したい用事が出来たので、折角だからPythonでやってみたところ、 日本語を含むXMLだったのでUnicodeEncodeErrorが出てしまった。。。 「Unicode文字列って何?」状態だったので、やったことを忘れないようにメモメモ。 XMLパーサー 代表的なパーサ…

初めてのPython(26章前編)

属性検索順制御 スーパークラスとして、ビルドインオブジェクト/objectを指定したクラスのインスタンスでは、 属性の検索が幅優先で行われる。 それだと困る(深さ優先にして欲しい)場合は、優先したい属性をクラスの中で明示的に指定する。 [kobakoba0723@fe…

初めてのPython(25章後編)

getattr(X, N) Xに所属するNという属性を返す関数。 X.Nとの違いは、getattrではNに”文字列を返す式"を使うこと。 文字列を返す式の1つがNに変数を渡すことX.__dict__[N]との違いは、getattrでは上位クラスの属性の検索が行われること。 [kobakoba0723@fedo…

初めてのPython(25章前編)

IS-A関係, HAS-A関係 A is a Bから来ているのがIS-A関係。 「AはBの一種」なので、Aの中でさらに何かに特化したのがB。A has a Bから来ているのがHAS-A関係。 「AはBを含んでいる」なので、AはBの構成要素。参考:オブジェクト思考 is-a関係とhas-a関係:継承…

初めてのPython(24章後編)

名前空間 = ディクショナリ サブクラスにスーパークラスの属性が継承される時に起こるのは「ディクショナリのリンク」 [kobakoba0723@fedora13-intel64 ~]$ cat namespace.py #!/usr/bin/env python class C1(object): c1_data = 1 def __init__(self, value…

初めてのPython(24章中編)

演算子のオーバーロード __getitem__ と __iter__ どちらも反復処理を実現させるのに使う。 __getitemm__はインデクシング処理に対応するフックメソッド*1 __iter__はイテレータプロトコルに対応するフックメソッド 反復処理には次のようなものが該当する。 …

初めてのPython(24章前編)

class ステートメント def ステートメントと同じような動き 該当モジュールが読み込まれた時に実行される クラス名に指定したクラスオブジェクトを生成し、クラス名の変数に代入する クラスは名前空間として考えられる クラスのなかで代入された変数はクラス…

初めてのPython(23章)

Pythonのクラスの特徴 名前空間の1つ 名前空間の継承(階層化)、演算子のオーバーロードが出来る クラスオブジェクトとインスタンスオブジェクト class ステートメントは、def ステートメントと同様に、初回インポート時に初めて実行される クラス変数はクラ…

初めてのPython(22章)

クラスとインスタンス クラスはインスタンスを作るためのひな形。 クラスを作成(定義)するには class ステートメントを使い、インスタンスを作成するにはクラスを呼び出す。 インスタンスの属性検索は以下のようにして行われる 下から上に(サブクラスの属性…

初めてのPython(21章)

モジュールのカプセル化 Pythonではカプセル化は出来ない。 アンダースコア(_)を使うことで、データを隠蔽することは出来るPEP8。 1個の場合、from ~ import * でインポートできないようになる 2個の場合、モジュール(クラス無し)の時は1個の時と同じ動き…

初めてのPython(20章)

インポート方法は2種類 モジュールファイルを指定 モジュールが格納されているディレクトリパスを指定 ディレクトリパスを指定する方法をパッケージインポートと呼び、指定されるディレクトリのことをパッケージと呼ぶ。パッケージインポートの場合、【ディ…

初めてのPython(19章)

モジュール トップレベルの変数は、モジュールの属性となる。 また、モジュール名は、プログラム中では変数として扱われるので、予約語は使えない。 importステートメントとfromステートメント importはモジュール全体をインポートするのに対して、fromはモ…