2017-04-08 20 views
-3

我應該創建一個名爲Dog(Animal)的類,它繼承自Class Animal。不過之後我運行這段代碼,我得到了我不明白的錯誤:如何獲得在Python中工作的類繼承?

問題是解決了,我此刻

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

請提供錯誤堆棧跟蹤作爲代碼段而不是鏈接到圖像。 –

+0

你好,你的意思是追溯?我在帖子中附上了一張照片。對不起,我是一個新手。 – Hanshenry90

+0

@Hanshenry:對於像代碼和控制檯IO這樣的文本工件,讀者不喜歡圖像。圖像與剪貼板,搜索引擎和屏幕閱讀器不兼容。你會刪除該圖像並將其替換爲文本?也使用代碼格式化日誌。 – halfer

回答

1

在我加入元類 =類型的開頭,問題就解決了。我不太清楚,但似乎metaclass允許python2.7訪問python3的庫。

1

改變這一行看到沒有進一步的問題:

class Animal: 

這樣:

class Animal(object): 

post解釋了它相當不錯。

+0

您好,我看了一下錯誤:超(狗,個體經營).__的init __(姓名,身高,體重,聲音) 類型錯誤:超()參數1必須是類型,而不是classobj我很困惑超(狗,個體經營)是不工作 – Hanshenry90

+0

你讀過[post](http://stackoverflow.com/questions/4015417/python-class-inherits-object)嗎?你有沒有修改你的代碼? –

+0

嗨,我改變了父類爲「類動物(對象)」,但似乎沒有工作。 – Hanshenry90