2016-04-04 5 views
0
import random 
import sys 
import os 

class Animal : 
    __name="" 
    __height=0 
    __weight=0 
    __sound=0 

def __init__(self, name, height, weight, sound): 
    self.__name=name 
    self.__height=height 
    self.__weight=weight 
    self.__sound=sound 

def set_name(self,name): 
    self.__name =name 
def get_name(self): 
    return self.__name 
def set_height(self,height): 
    self.__height =height 
def get_height(self): 
    return str(self.__height) 
def set_weight(self,weight): 
    self.__weight =weight 
def get_weight(self): 
    return str(self.__weight) 
def set_sound(self,sound): 
    self.__sound =sound 
def get_sound(self): 
    return self.__sound 
def get_type(self): 
    print("Animal") 
def toString(self): 
    return"{} is {} cm tall and {} kilograms and say{}".format(self.__name, self.__height,self.__weight,self.__sound) 
cat = Animal('ruby',33,10,'meow') 
print(cat.toString()) 

エラーメッセージ:このコンストラクタは引数を取りません:pythonの

Traceback (most recent call last): 
    File "python", line 37, in <module> 
TypeError: this constructor takes no arguments 
+3

あなたのソースファイルのようなものですか?あなたが関数をインデントしていない場合は、グローバル関数を作成しているだけで、クラス関数ではありません。 – Carpetsmoker

+1

@MikeMüllerこのような場合は、Pythonファイルのインデントを編集しないでください。あなたの編集が問題の原因を隠すかもしれないまともな変更があります。インデントを修正するだけで、これは問題ではないと完全に確信しています。 – Carpetsmoker

+0

@rakesh:パラメータを渡すときではなく、常に変数割り当てに '='の前後にスペースを入れてください。これはPEP8と呼ばれる標準に従います –

答えて

1

クラスメソッドは、これは

ruby is 33 cm tall and 10 kilograms and saymeow

になり、クラス内

import random 
import sys 
import os 

class Animal : 
    __name="" 
    __height=0 
    __weight=0 
    __sound=0 

    def __init__(self, name, height, weight, sound): 
     self.__name=name 
     self.__height=height 
     self.__weight=weight 
     self.__sound=sound 

    def set_name(self,name): 
     self.__name =name 
    def get_name(self): 
     return self.__name 
    def set_height(self,height): 
     self.__height =height 
    def get_height(self): 
     return str(self.__height) 
    def set_weight(self,weight): 
     self.__weight =weight 
    def get_weight(self): 
     return str(self.__weight) 
    def set_sound(self,sound): 
     self.__sound =sound 
    def get_sound(self): 
     return self.__sound 
    def get_type(self): 
     print("Animal") 
    def toString(self): 
     return"{} is {} cm tall and {} kilograms and say{}".format(self.__name, self.__height,self.__weight,self.__sound) 
cat = Animal('ruby',33,10,'meow') 
print(cat.toString()) 

ようにインデントされなければなりません

関連する問題