简体   繁体   中英

TypeError: object () takes no parameters - python

I am new to python and trying to write a program with class and object. Following is my code:

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())

when I run the program it gives me an error that object takes no parameters. but I have described the parameters in the constructor of the class. Please Help.

Make sure all your functions for Animal are indented properly. They need to be inside of class Animal

As mentioned by the others, the __init__ method needs to be indented inside of class Animal for it to be considered a constructor.

But, be careful after you do this. The way that __name , __height , __weight , and __sound are declared right now, they are static class variables. However, in __init__ (by prefixing self. in front of the variables) you would be re-declaring instance variables with the name variable names.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM