フィールドとは

オブジェクトの特徴

キャラクターの「名前」「職業」「体力」など、「特徴」をクラス定義したものをフィールドといいます。

フィールドの例

  • 名前 : アリス
  • 職業 : 魔法使い
  • 体力 : 30

フィールド定義

フィールド定義はオブジェクトの特徴にあわせて「フィールド名」や「データ型」を決める必要があります。

項目 フィールド名 データ型
キャラクター名 name String
職業 job String
体力 hp int

フィールドとメンバー変数

メンバー変数

クラス内に定義する変数をメンバー変数といいます。OOPではインスタンスで扱うメンバー変数(staticでない)のことをインスタンス変数ともいいます。

class Person:
    # メンバー変数(インスタンス変数)
    name:str name

フィールドとプロパティの違い

フィールドのことをプログラム言語によってはプロパティともいいます。

フィールド定義の基本

フィールド定義はクラスの中に「修飾子」「データ型」「変数名」を記述します。

class クラス名:
    # フィールド定義
    データ型:データ型 変数名

アクセス修飾子

アクセス修飾子を使うと「クラス」「フィールド」「メソッド」のアクセスを外部プログラムから制限します。

アクセス修飾子 範囲
public すべてのクラスからアクセス
protected 自分のクラスとサブクラスからアクセス
なし 自分のクラスと同じパッケージのクラスからアクセス
private 自分のクラスからだけアクセス

クラスの生成

Characterクラスを作成して、フィールド定義してみましょう。

ファイル構成

samples/
├── main_app1.py
└── models/
    └── Person.py

フィールド定義

プログラミングする前に、生成するオブジェクトの特徴を定義しておきます。

項目 フィールド名 データ型 アクセス修飾子
キャラクター名 name str public
職業 job str public
体力 hp int public

クラスファイルにフィールド定義

Personクラスにフィールド定義します。

models/Person.py
class Person:
    name:str = ""
    job:str = ""
    hp:int = 0

フィールドのアクセス

. (ピリオド)をつけてアクセス

フィールドはインスタンスオブジェクトに「 . 」(ピリオド)をつけてアクセスします。メンバー変数のアクセスはフィールド名で指定します。

インスタンス.フィールド名

フィールドのアクセスの例

wizardオブジェクトのnameフィールドにアクセスすします。Personクラスがpublicになっているので外部からアクセス可能です。

wizard.name

フィールドのデータ表示

Personオブジェクトのデータをコンソールで確認してみましょう。

main_app1.py
from models.Person import Person

wizard:Person = Person()

print(wizard.name)
print(wizard.job)
print(wizard.hp)

Characterオブジェクトのフィールドデータが表示されました。現在は何も設定していないので空欄と「0」が表示されます。

結果

0

フィールドの利用

フィールドにデータを代入

フィールドにデータを代入します。

main_app1.py
from models.Person import Person

wizard:Person = Person()
wizard.name = "アリス"
wizard.job = "Wizard"
wizard.hp = 30

print(wizard.name)
print(wizard.job)
print(wizard.hp)
結果
アリス
wizard
30

新規インスタンス

別のキャラクターのインスタンスwarriorを作成し、フィールドを設定します。

main_app1.py
warrior:Person = Person()
warrior.name = "ボブ"
warrior.job = "Warrior"
warrior.hp = 50

print(warrior.name)
print(warrior.job)
print(warrior.hp)

このようにCharacterクラスを元に、キャラクターの特徴が違った別々のオブジェクトが生成できます。

結果
ボブ
warrior
50

演習

問題1

zooパッケージにAnimalクラスを作成し、つぎの内容でフィールドを定義してみましょう。

項目 フィールド名 データ型 アクセス修飾子
種別 type str public
名前 name str public
鳴き声 crying str public

問題2

zooパッケージにメインプログラムAnimalAppを作成し、Animalインスタンスを生成してみましょう。

プログラム例

dog:Animal = nimal()

問題3

Animalインスタンスに、つぎの内容でフィールドデータを更新して確認してみましょう。

項目 フィールド名
種別 type dog
名前 name タロー
鳴き声 crying わん!

Python超入門