2016-06-20 137 views
-1
class Animal: 
    __name = None 
    __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 self.__height 

    def set_weight(self, weight): 
     self.__weight = weight 

    def get_weight(self): 
     return 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 says {}'.format(self.__name, self.__height, self.__weight, 
                    self.__sound) 

cat = Animal('Whiskers', 33, 10, 'meow') 
print(cat.toString()) 

class Dog(Animal): 
    __owner = None 

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

    def toString(self): 
     return '{} is {} cm tall and {} kilograms and says {}. His owner is {}'.format(self.set_name(), 
                        self.set_height(), 
                        self.set_weight(), 
                        self.set_sound(), 
                        self.set_owner()) 

    def multiple_sounds(self, how_many=None): 
     if how_many is None: 
      print(self.get_sound()) 
     else: 
      print(self.get_sound() * how_many) 


spot = Dog('Spot', 53, 27, 'Ruff', 'Derek') 
print(spot.toString()) 

當我繼承它時,構造函數有問題嗎? 爲什麼這個錯誤發生在第66行? 錯誤是:TypeError:set_name()缺少1個必需的位置參數:'name'

TypeError: set_name() missing 1 required positional argument: 'name'

也有在行其他錯誤80.

+1

你爲什麼使用靜態初始化? '__name = None'和其他?不需要使用它,因爲存在初始化全部的構造函數 – nikniknik2016

+1

這實際上不是你如何在Python中編寫類。 –

回答

0

的問題是,你在Dog類的toString方法使用set..()代替get_..()

def toString(self): 
    return '{} is {} cm tall and {} kilograms and says {}. His owner is {}'.format(self.get_name(), 
                       self.get_height(), 
                       self.get_weight(), 
                       self.get_sound(), 
                       self.get_owner()) 

而且你應該刪除變量:

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

    def __init__(self, name, height, weight, sound): 

class Animal: 

    def __init__(self, name, height, weight, sound): 

有沒有理由讓他們!

相關問題