文字 、整数、浮動小数点数、リスト、 タプル、 辞書など、 Pythonのデータはすべてクラスからつくられたオブジェクト(もの)です。
Pythonのデータは、すべてクラスであり、「型」があります。
type メソッドで表示させたら、よくわかります。
xxxxxxxxxx
print(type("abc"))
print(type(10))
print(type(20.5))
print(type(['大阪','京都','名古屋','東京']))
print(type(('red','green','blue')))
print(type({'rinngo':100 , 'pai':200 , 'mikan':300}))
オブジェクトはクラスから作ります。すなわち、クラスは「どんな オブジェクトを作るか」を書いたオブジェクトの仕様書、設計図です。
xclass クラス名: # クラス名は単語毎に1文字目大文字にします。
pass # 何もしない
class クラス名: def 関数名1(self, 引数2、引数3) ステートメント
実際に呼ぶ時
クラス名.関数名1(実引数2 , 実引数3)
(使用例)
xxxxxxxxxx
class Hito:
def zokusei(self,namae,seibetu,nenrei):
self.namae = namae
self.seibetu = seibetu
self.nenrei = nenrei
def jikosyoukai(self):
print('私は{},{},{}です' . format(self.namae,
self.seibetu,self.nenrei))
Hito1 = Hito() # 新しいインスタンスを作成
Hito1.zokusei('まり','女',22)
print(Hito1.namae)
print(Hito1.seibetu)
print(Hito1.nenrei)
print(Hito1.jikosyoukai())
ゲームのキャラクターの登場人物はたくさんでてきます。
クラスとインスタンスを使えば、新しいインスタンスを いくつもつくり登場人物をどんどん増やすことが簡単です。。
xxxxxxxxxx
class Hito:
def zokusei(self,namae,seibetu,nenrei):
self.namae = namae
self.seibetu = seibetu
self.nenrei = nenrei
def jikosyoukai(self):
print('私は,{},{},{}です' . format(self.namae,
self.seibetu,self.nenrei))
xxxxxxxxxx
Hito1 = Hito() # 新しいインスタンス1を作成
Hito2 = Hito() # 新しいインスタンス2を作成
Hito3 = Hito() # 新しいインスタンス3を作成
Hito1.zokusei('まり','女',30)
Hito2.zokusei('さつき','女',22)
Hito3.zokusei('なお','女',38)
print(Hito1.jikosyoukai())
print(Hito2.jikosyoukai())
print(Hito3.jikosyoukai())
classの便利な点はコードの使い回しが、しやすい点、機能拡張が しやすい点です。 「継承」という機能を利用することで、他で作成したclassの メソッドや値を受け継ぎつつ、メソッド等を編集、追加できます。 定義するclass名の後ろに継承したいclass名を()内に指定すればいいです。
各インスタンスそれぞれに属性を設定するのは面倒です。 その面倒さを解消できるように,classにはインスタンス作成時に 自動で呼び出されるメッソッド
xxxxxxxxxx
__ int__()を定義することが
できます。このメソッドは「コンストラクタ」と呼ばれます。
__int__() の intはアンダーバー2個づつで、はさまれています。
xxxxxxxxxx
class Tokuchou(Hito): # Hitoクラスを継承します。
def __init__(self,namae,seibetu,nenrei,sinchou,taizyuu ,ketuekigata):
self.namae = namae
self.sinchou = sinchou
self.taizyuu = taizyuu
self.ketuekigata = ketuekigata
def jikosyoukai2(self):
print(self.sinchou)
print(self.taizyuu)
print(self.ketuekigata)
print('私は{}です。身長は{}cm,体重{}Kg,血液型は{}です' . format(self.namae,self.sinchou,self.taizyuu,self.ketuekigata))
tokuchou1 = Tokuchou('まり','女',32,162,45,'AB') # インスタンス作成時に属性設定
tokuchou1.jikosyoukai2()
tokuchou2 = Tokuchou('さつき','女',22,160,43,'AB') # インスタンス作成時に属性設定
tokuchou2.jikosyoukai2()
tokuchou3 = Tokuchou('なお','女',38,155,48,'B') # インスタンス作成時に属性設定
tokuchou3.jikosyoukai2()