<<前 [TOP]
次のプログラムを作ってみましょう。
【dataclass1.py】
from dataclasses import dataclass @dataclass class Elephant: name: str age: int weight: int def printElephant( e ): print( '名前:' + str(e.name) + ',' + '年齢:' + str(e.age) + ',' + '体重:' + str(e.weight)) e1 = Elephant('花子', 8, 5000) e2 = Elephant('太郎', 7, 6000) printElephant( e1 ) printElephant( e2 )
pythonでは構造体がありません。
構造体のような使い方をするには「dataclassモジュール」を利用すると便利です。
from dataclasses import dataclass
のようにしてインポートし、@dataclass
の記述を行うことで、以下のようなインスタンス変数を自動的に追加することになります。
def __init__(self, name: str, age: int, weight: int): self.name = name self.age = age self.weight = weight
記述は以下のようにクラスに要素を持たせます。
@dataclass class Elephant: name: str age: int weight: int
あとは別途インスタンスを生成する必要もなく、以下のようにして構造体と同じように利用できます。
e1 = Elephant('花子', 8, 5000) e2 = Elephant('太郎', 7, 6000)
今回は「Elephant」という名の構造体で「name」「age」「weight」の3つの要素を持っています。
出力結果です。
次のプログラムを作ってみましょう。
【dataclasst2.py】
from dataclasses import dataclass @dataclass class Elephant: name: str age: int weight: int def printElephant( e ): print( '名前:' + str(e.name) + ',' + '年齢:' + str(e.age) + ',' + '体重:' + str(e.weight)) e = list(range(3)) e[0] =Elephant('花子', 8, 5000) e[1] = Elephant('太郎', 7, 6000) e[2] = Elephant('ゴン太', 1, 1000) for i in range(0, (len(e))): printElephant( e[i] )
この様に作成した構造体のインスタンスを配列に格納して利用することも出来ます。
e = list(range(3))
として要素3つ分の空のリストを作成しています。
e = list(range(3)) e[0] =Elephant('花子', 8, 5000) e[1] = Elephant('太郎', 7, 6000) e[2] = Elephant('ゴン太', 1, 1000)
実行結果です。
↓↓クリックして頂けると励みになります。