職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

クラスメソッドの引数selfの役目

2021年04月17日 | Python
クラスメソッドの引数selfの役目

【開発環境】
OS:Win10(64ビット)
言語:Python3.8.5(64bit)
Python の統合開発環境:IDLE
IDLEの操作は別サイト参照のこと

【引数selfの役目】
「dice」ファイルを変更する
・改造前
import random

class Dice:
face_num = 6
def shoot(self):
return random.randint(1,6)←引数selfが使われてない

・改造後
import random

class Dice:
face_num = 6
def shoot(self):
return random.randint(1,self.face_num)
書き換えたら、モジュールにするため、カレントフォルダに保存する。
※メソッドを使う時は、必ずself引数を使う

【実行】
「sai.py」ファイルを実行する
import dice
sai = dice.Dice()
print(sai.shoot())←ファイルから実行する場合、print()関数は必要

・対話コード
Python 3.8.9 (tags/v3.8.9:a743f81, Apr 2 2021, 11:10:41) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
============================ RESTART: D:\Data\sai.py ===========================
2
>>>
【初期化メソッド】
Pythonでは、クラスを作ると、自動的に初期化メソッドを用意してしまう。しかし、自分で用意したい時は、__init__メソッドを使う必要が有る。
では、Diceクラスを下記のように変更する

import random

class Dice:
face_num = 6

def __init__(self):
print('Hello!!')

def shoot(self):
return random.randint(1,self.face_num)
実行
============================ RESTART: D:\Data\sai.py ===========================
Hello!!
5
・対話コードだと
>>>importlib.reload(dice)
>>> sai = dice.Dice()
Hello!!
>>> sai.shoot()
1
正多面体と面の数】
「サイコロ」プログラムを正多面体に対応するように「Dice」クラスを改造する

import random

class Dice:
#face_num = 6を消す

def __init__(self,val):
#print('Hello!!')を消す
self.face_num = val

def shoot(self):
return random.randint(1,self.face_num)

「sai.py」プログラム実行する
import dice
sai = dice.Dice(4)
print(sai.shoot())
print(sai.face_num)

実行結果
============================ RESTART: D:\Data\sai.py ===========================
2
4
対話モードだと
>>> import dice
>>> sai = dice.Dice(4)
>>> sai.shoot()
3
>>> sai.face_num
4
【引数のデフォルト値】
今度は引数に値が設定しなくても、エラーに成らない方法→デフォルト値を使う
Diceクラスを下記のように書き換える。

import random

class Dice:

def __init__(self,val = 6):
self.face_num = val

def shoot(self):
return random.randint(1,self.face_num)

実行する
>>> import dice
>>> sai = dice.Dice()
>>> sai.face_num
6
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする