TypeError:object()不带参数 - python

时间:2016-12-12 17:46:06

标签: python

我是python的新手,并尝试用类和对象编写程序。以下是我的代码:

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

# define a constructor and pass arguments
def __init__(self, name, height, weight, sound):
    self.__name = name
    self.__height = height
    self.__weight = weight
    self.__sound = sound


# set and get functions for name
def set_name(self, name):
    self.__name = name

def get_name(self):
    return self.__name


# set and get functions for height
def set_height(self, height):
    self.__height = height

def get_height(self):
    return str(self.__height)


# set and get functions for weight
def set_weight(self, weight):
    self.__weight = weight


def get_weight(self):
    return str(self.__weight)


# set and get functions for sound
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 {} kg and say {}".format(self.__name, self.__height, self.__weight, self.__sound)


# create an object call cat of type Animal
cat = Animal('Whiskers', 33, 10, 'Meow')
print(cat.toString())

当我运行程序时,它给出了一个错误,即对象不带参数。但我已经在类的构造函数中描述了参数。请帮助。

2 个答案:

答案 0 :(得分:5)

确保Animal的所有功能都正确缩进。他们需要在Animal类中

答案 1 :(得分:3)

正如其他人所提到的,__init__方法需要在Animal类中缩进,以便将其视为构造函数。

但是,这样做之后要小心。现在声明__name__height__weight__sound的方式,它们是静态类变量。但是,在__init__中(通过在变量前添加前缀self.),您将使用名称变量名称重新声明实例变量。