Python ― リスト上の彼女ら
#Pythonのシェルで遊んでみた。
#とりあえず、クラスを作ってみる。
>>> class Chara: def __init__(self, s): self.name = s
#「class」はクラスを定義するキーワード、「Chara」がクラス名、「__init__(self,s)」はコンストラクタで、「self」がないとエラーになる。sはインスタンス作成時にPythonに渡すものを入れる仮引数。self.nameはCharaクラスのプロパティ。
>>> p=Chara('Haruhi')
>>> p.name
'Haruhi'
#「Chara('Haruhi')」で作ったインスタンスを変数pに格納し、「p.name」でnameプロパティを求めると、'Haruhi'を返してくれる。
#あ、性別も設定したくなった。
>>> p.sex='female' >>> p.sex 'female'
#Charaクラスにはsexプロパティが設定されていないにもかかわらず、pはsexプロパティを持つことができる。このあたりのいい加減さに少々カルチャーショックを覚える。
#ところで、このpそのものなんだが……
>>> p <__main__.Chara instance at 0x00DB9D00>
#pの正体を問い合わせると、メモリ上でpを格納しているアドレスが帰ってくる。
#とりあえず、このpをリストに入れてみる。
>>> cl[0] = p Traceback (most recent call last): File "", line 1, in cl[0] = p NameError: name 'cl' is not defined
#エラー発生。実は、Pythonでリストに項目を追加する表現は一風変わっている。
>>> cl = [p] >>> cl[0] <__main__.Chara instance at 0x00DB9D00>
#cl[0]とpのアドレスは一致している。つまり、cl[0]とpは全く同じものとして扱われる。
>>> cl[0].age=16 >>> p.age 16
#ほらね。cl[0]にageプロパティを追加すると、pにも同じプロパティが存在するようになる。
name=Haruhi
age=16
sex=female
もしかしてこれはメランコリーのやつでしょうか(笑)
いつかハルヒトランプのネット対戦でもやりたいものですねぇ。
もちろん、かのシリーズを想定しています!
コメントの投稿
- トラックバックURLはこちら
- http://reviva.blog1.fc2.com/tb.php/806-8731a313
ピアノピースー024 きらきら星変奏曲/モーツァルト・Mac OSX 10.5.2の"Stacks"でリスト表示が可能に…・[vim]第10回Vimスクリプト入門みたいの(リスト削除関数)・エレッセ リストバンド EAC2205・2007年映画、音楽琴線リスト・今年読んだ本のベストの為の書き抜きリスト・...
