1
Animalクラスを継承するDogクラスを使って基本的なPython継承を試しています。何らかの理由で、私のDogオブジェクトがname
を正しく継承していないので、私はAttributeError: 'Dog' object has no attribute '_Dog__name'
を得続けます。誰が何が起こっているかも知っていますか?私のコードは以下の通りです:Pythonの継承 - オブジェクトに属性エラーがありません
class Animal(object):
__name = None #signifies lack of a value
__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
class Dog(Animal):
def __init__(self, name, height, weight, sound, owner):
super(Dog, self).__init__(name, height, weight, sound)
self.__owner = owner
#self.__name = name this works if I uncomment this line.
__owner = ""
def toString(self):
return "{} belongs to {}".format(self.__name, self.__owner)
#return 'Sup dawg'
fido = Dog("Spot", 3, 4, "Woof", "John")
print(fido.toString())
**実際に何かを理解していない限り、ダブルアンダースコアネームマングリングを使用しないでください!これは、「プライベート」アクセス修飾子と同じではありません。また、インスタンス変数でシャドーするクラス変数は使用しないでください。 Python!= Java –
**このチュートリアルは使用しないでください**。 Pythonのプログラマーではない人物であり、多分Javaコードを書く人かもしれません。私は真剣に、 'toString'を意味しますか? –