search this site:

Chaotic Neutral

左にも右にもよらず、自由な生き方探し。

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

もしかしてこれはメランコリーのやつでしょうか(笑)

いつかハルヒトランプのネット対戦でもやりたいものですねぇ。

  • 2007年12月28日金
  • URL
  • 弦謳 #dPE4wBkA
  • 編集

もちろん、かのシリーズを想定しています!

  • 2007年12月29日土
  • URL
  • Lexar #tV7uNBRQ
  • 編集

コメントの投稿

URL
コメント
パスワード
秘密
管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://reviva.blog1.fc2.com/tb.php/806-8731a313

ピアノピースー024 きらきら星変奏曲/モー

ピアノピースー024 きらきら星変奏曲/モーツァルト・Mac OSX 10.5.2の"Stacks"でリスト表示が可能に…・[vim]第10回Vimスクリプト入門みたいの(リスト削除関数)・エレッセ リストバンド EAC2205・2007年映画、音楽琴線リスト・今年読んだ本のベストの為の書き抜きリスト・...