Это часть кода Python для изучения наследования.Ошибка атрибута при использовании функции super() в Python 3.5
class Animal():
__name= None
__sound = None
def __init__(self, name , sound):
self.__name= name
self.__sound = sound
def ToString(self):
print ("The {} has the sound {}".format(self.__name ,
self.__sound))
cat = Animal('Tiger' , 'roars')
cat.ToString()
class Panther(Animal):
__owner = None
def __init__(self , name ,sound ,owner):
self.__owner = owner
super(Panther ,self).__init__(name, sound)
def ToString(self):
print(self.__owner)
print(self.__name)
leopard = Panther('Leopard' , 'roars' , 'Senegal')
leopard.ToString()
Но когда я пытаюсь запустить его в PyCharm, я получаю следующее сообщение об ошибке:
/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/venkat/PycharmProjects/PythonOneVideo/main.py The Tiger has the sound roars Senegal Traceback (most recent call last): File "/Users/venkat/PycharmProjects/PythonOneVideo/main.py", line 41, in leopard.ToString() File "/Users/venkat/PycharmProjects/PythonOneVideo/main.py", line 35, in ToString print(self.__name) AttributeError: 'Panther' object has no attribute '_Panther__name'
Process finished with exit code 1
Что случилось с вызовом конструктора суперкласса? Почему эта ошибка произошла и как ее решить? Любая помощь будет оценена по достоинству.
Возможный дубликат [Смысл одно- и двойного подчеркивания перед именем объекта в Python] (http://stackoverflow.com/questions/1301346/the-mean-of-a-single-and-a-double-underscore-before-an-object-name-in-python) –