最近私はPythonの学習を始めました。そして、継承がどのようにPythonで動作するのか苦労しています。Pythonの継承、属性のエラー
私は2つのクラスを作成しました.1つはAnimal、もう1つはDogです。 DogクラスはAnimalクラスを継承します。私はDogクラスで使用したいAnimalクラスに、名前、高さ、音などの属性をいくつか持っています。私はinit動物クラスのメソッドを使用して属性を設定しています。
class Animal:
__name = ""
__height = 0
__weight = 0
__sound = 0
def __init__(self, name, height, weight, sound):
self.__name = name
self.__height = height
self.__wight = 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", 50, 20, "meow")
print(cat.tostring())
class Dog(Animal):
__owner = None
def __init__(self, name, height, weight, sound, owner):
super(Dog, self).__init__(name, height, weight, sound)
self.__owner = owner
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.__name,
self.__height,
self.__weight,
self.__sound,
self.__owner)
def multiple_sounds(self, how_many=None):
if how_many is None:
print(self.get_sound())
else:
print(self.get_sound() * how_many)
my_dog = Dog("spot", 50, 40, "Ruff", "Derek")
print(my_dog.tostring())
問題は、私は犬のクラスのオブジェクトを使用してすべての属性を印刷しようとすると、エラーが
*line 73, in tostring
return '{} is {} cm tall and {} kilograms and says {} His owner is {}'.format(self.__name,
AttributeError: 'Dog' object has no attribute '_Dog__name'*
誰も私は、このコードでは、問題を見つけるのを助けることができる」と言って?
ダブルアンダースコアを単一のアンダースコアに変更することで解決できる問題。助けてくれてありがとう ! – Yousaf