このコンストラクタ関数について､ 簡単に補足しておきます｡
これは､ オブジェクトをインスタンス化するたびに呼び出され､ カスタムオブジェクトを作成する方法であることを覚えておいてください｡
そうですね｡
しかし､ ここでできる面白いことは､ インスタンス化の方法をコントロールできるため､ さまざまなセーフガード（安全策）を講じることができることです｡
例えば､ これは必要ないからとりあえず削除しておこう｡
あるいは､ ユーザが18歳以上かどうかをチェックしたい場合は､ この処理を実行するように変更しましょう｡
たとえば､ このゲームはR指定なので､
18歳以上の人しかプレイできません｡
また､ nameを匿名にするなど､ デフォルトのパラメータを与えることも可能です｡
もし彼らが名前を提供しなければ､ そして年齢は､ もし彼らが年齢を提供しなければ､ ゼロになります｡
ここで､ プレイヤー1とプレイヤー2のインスタンスを作成し忘れたとすると､ 「実行」をクリックします｡
Air player object has no attribute name（エアプレイヤーオブジェクトには属性名がありません）と表示されます｡
そして､ これは11行目にあります｡
さて､ なぜセルフネームがないのでしょうか？
まあ､ 17行目でシャウトをかけようとしてたからな｡
しかし､ 残念ながらこれをインスタンス化することはありませんでした｡ なぜなら､ 何も提供しない場合､ 年齢はゼロになってしまうからです｡
だから､ このプロパティでインスタンス化することは絶対にないんだ｡
なるほど｡
だから､ トムに譲ろう｡
そして､ 年齢は10歳になる｡
そして､ とりあえずプレイヤー2を外してみよう｡
そうすると､ プレイヤー1がスカウトしてきて､ 私は「実行」をクリックします｡
またしてもエラーになる｡ なぜなら､ トムはまだ10歳だからだ｡
このキャラクターを作るつもりはないんです｡
さて､ 次はエラーについてです｡
そして､ このエラーを出す代わりに､ 「プレイヤーの年齢が足りません」というメッセージを送ることができるかもしれません｡
しかし､ 今のところ､ コンストラクタとオブジェクトのインスタンス化という考え方がもたらす力を理解していただけたと思います｡
オブジェクトを作成するために正しいデータ型を受け取ることを確認するために､ さまざまなコントロールとセーフガードを追加することができます｡
あるいは､ 年齢を18歳以上とするのは､ このプレーヤー・オブジェクトを実際にインスタンス化するときに､ 正しい方法で行うことを確認するためかもしれません｡
だから､ このinitでは､ かなりのコントロールが可能です｡