超级 python 2.7
super in python 2.7
我正在尝试了解如何在 python
中使用 super
class people:
name = ''
age = 0
__weight = 0
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s is speaking: I am %d years old" %(self.name,self.age))
class student(people):
grade = ''
def __init__(self,n,a,w,g):
#people.__init__(self,n,a,w)
super(student,self).__init__(self,n,a,w)
self.grade = g
def speak(self):
print("%s is speaking: I am %d years old,and I am in grade %d"%(self.name,self.age,self.grade))
s = student('ken',20,60,3)
s.speak()
以上代码出现以下错误:
---------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-147-9da355910141> in <module>()
10
11
---> 12 s = student('ken',20,60,3)
13 s.speak()
<ipython-input-147-9da355910141> in __init__(self, n, a, w, g)
3 def __init__(self,n,a,w,g):
4 #people.__init__(self,n,a,w)
----> 5 super(student).__init__(self,n,a,w)
6 self.grade = g
7
TypeError: must be type, not classobj
我很困惑为什么我不能在这种情况下使用 super(student,self).__init__(self,n,a,w)
,为什么我必须使用 people.__init__(self,n,a,w)
有什么帮助吗?
您的基础 class people
应该派生自 object
class,使其成为新样式 class,这将允许 super()
上班。
然后您应该使用 super
作为:
super(student, self).__init__(n,a,w)
旧式 classes 的行为完全不同,我不理解它们
我正在尝试了解如何在 python
中使用super
class people:
name = ''
age = 0
__weight = 0
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s is speaking: I am %d years old" %(self.name,self.age))
class student(people):
grade = ''
def __init__(self,n,a,w,g):
#people.__init__(self,n,a,w)
super(student,self).__init__(self,n,a,w)
self.grade = g
def speak(self):
print("%s is speaking: I am %d years old,and I am in grade %d"%(self.name,self.age,self.grade))
s = student('ken',20,60,3)
s.speak()
以上代码出现以下错误:
---------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-147-9da355910141> in <module>()
10
11
---> 12 s = student('ken',20,60,3)
13 s.speak()
<ipython-input-147-9da355910141> in __init__(self, n, a, w, g)
3 def __init__(self,n,a,w,g):
4 #people.__init__(self,n,a,w)
----> 5 super(student).__init__(self,n,a,w)
6 self.grade = g
7
TypeError: must be type, not classobj
我很困惑为什么我不能在这种情况下使用 super(student,self).__init__(self,n,a,w)
,为什么我必须使用 people.__init__(self,n,a,w)
有什么帮助吗?
您的基础 class people
应该派生自 object
class,使其成为新样式 class,这将允许 super()
上班。
然后您应该使用 super
作为:
super(student, self).__init__(n,a,w)
旧式 classes 的行为完全不同,我不理解它们