如何让类继承在Python中工作?

2024-04-19 19:05:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我应该创建一个名为Dog(Animal)的类,它继承自类Animal。但是,在运行此代码之后,出现了一些我无法理解的错误:

问题解决了,我现在看不到更多的问题

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 get_height(self):
    return str(self.__height)

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

def get_sound(self):
    return self.__sound

def get_type(self):
    print("Animal")

def toString(self):
    return "{} is {} cm tall and {} kilograms and says{}".format(self.__name,
                                                                 self.__height,
                                                                 self.__weight,
                                                                 self.__sound)


cat = Animal('pussy', 33, 10, 'meow')
print(cat.toString())
print(cat.get_type())
print(cat.get_sound())

class Dog(Animal):
__owner = ""

def __init__(self, name, height, weight, sound, owner):
    self.__owner = owner
    super(Dog, self).__init__(name, height, weight, sound)

def set_owner(self, owner):
    self.__owner = owner

def get_owner(self):
    return self.__owner

def get_type(self):
    print("Dog") # Dog object

def toString(self):
    return "{} is {} cm tall and {} kilograms and says{} its owner is {}".format(self.__name,
                                                                                 self.__height,
                                                                                 self.__weight,
                                                                                 self.__sound,
                                                                                 self.__owner)

spot = Dog("kaili", 22, 33, "woof", "Jiahui") 
print(spot.toString())  

Tags: andnameselfgetreturndefcatprint
2条回答

在我开始添加元类=type之后,问题就解决了。我不太确定,但似乎元类允许python2.7访问python3的库。你知道吗

更改此行:

class Animal:

对此:

class Animal(object):

这个post很好地解释了这一点。你知道吗

相关问题 更多 >