Pythonを学習し始めたばかりの初学者です。
以下のようにdict型を継承するクラスを作成したところ、dict型に値が格納されないという予期しない挙動を示しました。
Coinsクラスは各Coinを何枚所持しているかをdict型で保持するクラスです。
python3.6を利用しています。
python
1#ERROR CODE 2class Coin(IntEnum): 3 YEN_100 = 100 4 YEN_500 = 500 5 6class Coins(dict): 7 def __init__(self, numberOfCoins): 8 self = {} 9 coinID = 0 10 for coin in Coin: 11 self.update({coin : numberOfCoins[coinID]}) 12 print(self[coin]) 13 coinID += 1 14 15myCoins = Coins([3,2]) 16print(myCoins) # => {}が表示
実験の結果
Coinsクラスのコンストラクタ中で、self = {}を削除すると期待した挙動をすることが分かりました。
python
1class Coin(IntEnum): 2 YEN_100 = 100 3 YEN_500 = 500 4 5class Coins(dict): 6 def __init__(self, numberOfCoins): 7 #self = {} 8 coinID = 0 9 for coin in Coin: 10 self.update({coin : numberOfCoins[coinID]}) 11 print(self[coin]) 12 coinID += 1 13 14myCoins = Coins([3,2]) 15print(myCoins) # => {<Coin.YEN_100: 100>: 3, <Coin.YEN_500: 500>: 2}が表示
この挙動がなぜ起こるのか、理解ができなかったため質問させていただきました。
ご存知の方がいらっしゃいましたらよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/10 02:47