나는 상속과 슈퍼로 혼란 스럽다. 여기에 내가 몇 가지 코드를 작성하고, 여기에 python에서 super 키워드로 상속을 혼동하고 있습니까?
class Animal(object):
"""docstring for Animal"""
__name, __weight, __sound = ["",0,1]
def __init__(self):
super(Animal, self).__init__()
def setName(self, newName):
self.__name = newName
def getName(self):
return self.__name
class Dog(Animal):
"""docstring for Dog"""
def __init__(self):
super(Dog, self).__init__()
def setName(self, name):
self.name = "here is "+ name
def getName(self):
return self.name
if __name__ == "__main__":
fida = Dog()
fida.setName('fida')
def changeObjectName(obj):
obj.setName("Marcus")
print fida.getName()
changeObjectName(fida)
print fida.getName()
내가 두 경우 출력을 관찰하고, 아래를 참조하십시오
일이 같은 개 클래스의 코드를 주석
class Dog(Animal):
"""docstring for Dog"""
def __init__(self):
super(Dog, self).__init__()
# def setName(self, name):
# self.name = "here is "+ name
# def getName(self):
# return self.name
fida
Marcus
내가 OBS가 위의 출력에서 : 그리고이 같은 결과를 얻었다 수퍼 클래스에서 호출 된 메소드를 삭제했습니다. 위의 출력에서 동물) 코멘트없이
이 같은 개 클래스의 코드,
class Dog(Animal):
"""docstring for Dog"""
def __init__(self):
super(Dog, self).__init__()
def setName(self, name):
self.name = "here is "+ name
def getName(self):
return self.name
그리고이 같은 결과를 얻었다
here is fida
here is Marcus
나는 방법을 관찰 하위 클래스 (즉, Dog)에서 호출 됨
왜 setName
은 super에서 호출하지 않습니다. 개 클래스의 코드에 주석이없는 클래스?
및
위의 코드를 설명해주십시오? 예를 들어 # 1
이 놀라운 부분은 무엇입니까? 다르게 일어날 것으로 예상되는 것을 나타내지는 않았습니다. – user2357112
죄송합니다. @ user2357112. 내 코드를 편집했습니다. – codeimplementer
무엇? 왜 당신이 super()를 호출하지 않으면, 파이썬은 super()를 호출하지 않는지 묻고 있습니까? –