2017-11-28 5 views
-1

私はコードに関するいくつかの問題を抱えていました。私はPythonプログラミングの初心者ですから、すべてのエラーを理解することはできません。単にエラーを見つけるために、集中的にチェック:Pythonのクラス指向オブジェクトエラー?

class Animal(object): 
def __init__(self,legs,name): 
    def sleep(self,hours): 
     print("%s is sleeping for %d hours!" % (self.name,hours)) 
    self.legs = legs 
    self.name = name 
roscoe = Animal(4, "Canis Lupus Familiaris") 
roscoe.name = ("Roscoe") 
roscoe.sleep(4) 

これはエラーです:

Traceback (most recent call last): 
File "class.py", line 9, in <module> 
roscoe.sleep(4) 
AttributeError: 'Animal' object has no attribute 'sleep' 
+0

roscUe対ロスコー、エラーは、Uバージョンがクラス内のメソッドを作成するための適切な構文をチェック – ColdCat

+0

存在しない正しいです。 – SherylHohman

+0

私は新しいエラーをしました – Inferno

答えて

3

あなたが最後の行に構文エラーがあります。 それは次のようになります。

roscoe.sleep(4) 

代わりの

roscue.sleep(4) 

私はあなたは、Pythonでbegginnerだ見るため、より多くのコンテキストを与えます。 Pythonインタプリタのトレースバック(Pythonコードを実行する "プログラム")は、何が起こったかを伝えます。この場合、 "name 'roscue'は定義されていません"と表示されます。これは通常、構文エラーです。場合によっては、その関数を定義していないことを意味することもあります。しかし、この場合は前者です。

また、もう少し進むと、おそらくインデントのエラーが発生します。 Pythonでは、タブまたはスペースのいずれかを使用して、まとめたいブロックをすべてインデントする必要があります。

最後に、あなたの機能について考えると、それらを順番に並べなければなりません。 Initは関数であり、sleepは別の関数なので、それぞれの後にブロックがあります。異なるブロックは別々にインデントする必要があります。コードはどのように見えるのですか?盲目的に実行するのではなく、コードを修正してください。

class Animal(object): 
    def __init__(self,legs,name): 
    self.legs = legs 
    self.name = name 
    def sleep(self,hours): 
    print("%s is sleeping for %d hours!" % (self.name,hours)) 

roscoe = Animal(4, "Canis Lupus Familiaris") 
roscoe.name = ("Roscoe") 
roscoe.sleep(4) 
+0

私はこの問題を修正しましたが、属性エラーが発生しました – Inferno

+1

更新された答えを見て、あなたのコードはちょっとだったのです。ブロックが何であるか、関数を正しく定義する方法を理解してください。 Animalクラスの各関数は同じレベルで字下げしなければならず、元の投稿と同じように関数を入れ子にしたくありません。 –

+0

今回はもう一度エラーが出ましたが、パラメータを取り除こうとしましたが機能しなかったし、今までの主な問題を解決してくれてありがとうございました。 – Inferno

関連する問題