学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Python | 21 | 構造体(dataclass)を利用するプログラム

<<前  [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つの要素を持っています。


出力結果です。

structtest1.py
structtest1.py



次のプログラムを作ってみましょう。


【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)



実行結果です。

dataclass2.py
dataclass2.py



↓↓クリックして頂けると励みになります。


<<前  [TOP]