1
class T(object):
pass
t1 = T()
t1.name = 'Mike'
t1.age = 20
print(t1.name, t1.age)
1の実行結果
Mike 20
この様に、
クラスをデータ構造体として扱う事は可能である。
しかし、
以下の様な場合は、注意が必要だ。
2
class Player:
def __init__(self, job, weapon):
self.job = job
self.__weapon = weapon
def walk(self):
print(self.job + "は荒野を歩いていた")
self.__attack("スライム")
def __attack(self, enemy):
print(self.__weapon + "で" + enemy + "を攻撃")
player1 = Player("戦士", "剣")
player1.__weapon = '斧'
print(player1.__weapon)
2の実行結果
斧
本来、__weaponはアクセス制限がかけられていて、
クラスの外からはアクセスできない様になっている。
なので、
print(player1.__weapon)はエラーとなるはずである。
しかしながら、
player1.__weapon = '斧' で
新たに__weaponを生成してしまっている。
バグにつながる事があるので、
注意が必要である。