入門書通りコードを書き、pyファイルをターミナル上で実行したところエラーが出ました。


タイトルにある通り、エラーが出ます。  
コード、エラーメッセージは以下の通りです。

【コード】

[code]

    import random
    
    class Dice:
        face_num=6
        def _init_(self):
    
            print("Hello")
    
    def shoot(self):
            return random.randint(1,self.face_num)
    
[/code]

【エラーメッセージ】

>
[code]

>     >>> import dice
>     >>> sai=dice.Dice()
>     >>> sai.shoot()
>     Traceback (most recent call last):
>       File "<stdin>", line 1, in <module>
>     AttributeError: 'Dice' object has no attribute 'shoot'
>  
[/code]

* * *

問題⑴  
sai=dice.Dice()の部分でHelloが出ません。

問題⑵  
sai.shoot()の部分でランダムに１〜６の数字が出ません。  
＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿

当方初学者であり、大変初歩的な質問であるとは自覚しておりますが、  
どうぞよろしくお願いいたします。




  1. `__init__`の両側は _ が2つずつです。一つだけだと、ただのメソッドになってしまいます。

  2. `def shoot(self):` がインデントされていないので、Dice クラスとは関係のない関数になっています。Python ではインデントがとても重要なので気を付けてください。

手直ししたコードは

[code]

    import random
    
    class Dice:
        face_num=6
        def __init__(self):
    
            print("Hello")
    
        def shoot(self):
            return random.randint(1,self.face_num)
    
[/code]




  1. `__init__`の両側は _ が2つずつです。一つだけだと、ただのメソッドになってしまいます。

  2. `def shoot(self):` がインデントされていないので、Dice クラスとは関係のない関数になっています。Python ではインデントがとても重要なので気を付けてください。

手直ししたコードは

[code]

    import random
    
    class Dice:
        face_num=6
        def __init__(self):
    
            print("Hello")
    
        def shoot(self):
            return random.randint(1,self.face_num)
    
[/code]

