だから私は事が正常に動作print(spot.get_name())
あるオブジェクトはスーパークラスの関数ではありませんか?
error: " AttributeError: 'Dog' object has no attribute '_Dog__name'"
を得続けます。また、spot.multiple_sounds()
も同様に失敗しました。私は問題がオブジェクト定義の関数でスーパークラスからオブジェクト属性を呼び出そうとしていると思います。なぜ私は理解できません。私はチュートリアルからこのすべてをやっていて、コードは彼と同じです。彼はpython2.xを使っているし、spyder python3.xを使っているかもしれないと思っていますが、私は分かりません。どんな助けでも大歓迎です。 Pythonで
import random
import os
import sys
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 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 = ""
def __init__(self, name, height, weight, sound, owner):
self.__owner = owner
super().__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 says {} and 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.getsound())
else:
print(self.getsound()*how_many)
spot = Dog("Spot", 53, 27, "Ruff", "Some Guy")
print(spot.get_name())
print(spot.toString())
小規模な例が優れているされて...あなたが読みやすいサンプルプログラムにそのほとんどをトリムでしたが、問題を示しています。 – tdelaney
@ e4c5 - 私はそれがdupのために十分に近いとは思わない。これは、主に '__init__'のような特別なメソッドについて話しています。 – tdelaney
ok @tdelaney retracting – e4c5