[python语法语义] 新手求教关于super的问题

dieslrae 2011-09-18
用的2.7.1,照着书上写了一段代码

class A:
	def fnA(self):
		print 'A'


class B(A):
	def fnA(self):
		super(B,self).fnA()
		print 'B'

b = B()
b.fnA()


然后报一个这个异常,表示看不懂啊

Traceback (most recent call last):
  File "<pyshell#96>", line 1, in <module>
    b.fnA()
  File "<pyshell#92>", line 3, in fnA
    super(B,self).fnA()
TypeError: must be type, not classobj


求高手们指教,难道super不是这样用的?
weiertzw 2011-09-21
class A(object):
def fnA(self):
print 'A'


class B(A, object):
def fnA(self):
super(B,self).fnA()
print 'B'

b = B()
b.fnA()
>>>A
>>>B

----------------------
PYTHON里的SUPER只能用在新式类中,不能用于以前的经典类,如果基类是经典类则会出这个错。
dieslrae 2011-09-21
weiertzw 写道
class A(object):
def fnA(self):
print 'A'


class B(A, object):
def fnA(self):
super(B,self).fnA()
print 'B'

b = B()
b.fnA()
>>>A
>>>B

----------------------
PYTHON里的SUPER只能用在新式类中,不能用于以前的经典类,如果基类是经典类则会出这个错。

能多解释下新式类和经典类么?
Global site tag (gtag.js) - Google Analytics