我很困惑何时在定义一个类时将'object'放入括号中:
下面的示例代码,第一个在括号内有'object',它运行正常,但没有'object',它会产生错误,为什么?
class ClassA(object):
def __init__(self,x,y):
print 'this is ClassA', x, y
self.x = x
self.y = y
def methodA(self):
print 'methodA: %s %s' % (self.x, self.y)
class ClassB(ClassA):
def __init__(self, **kwargs):
super(ClassB, self).__init__(x=kwargs.get('x'), y=kwargs.get('y'))
*********************************************
CALLING FUNCTION
*********************************************
objA = ClassA(1,2)
objA.methodA()
print '-'*10
objB = ClassB(x=3,y=4)
objB.methodA()
*********************************************
RESULT - OK
*********************************************
this is ClassA 1 2
methodA: 1 2
----------
this is ClassA 3 4
methodA: 3 4
如果我在括号内定义没有'object'的classA(),它就会失败。为什么:
class ClassA():
def __init__(self,x,y):
print 'this is ClassA', x, y
self.x = x
self.y = y
def methodA(self):
print 'methodA: %s %s' % (self.x, self.y)
class ClassB(ClassA):
def __init__(self, **kwargs):
super(ClassB, self).__init__(x=kwargs.get('x'), y=kwargs.get('y'))
*********************************************
CALLING FUNCTION
*********************************************
objA = ClassA(1,2)
objA.methodA()
print '-'*10
objB = ClassB(x=3,y=4)
objB.methodA()
*********************************************
RESULT - FAIL
*********************************************
this is ClassA 1 2
methodA: 1 2
----------
Traceback (most recent call last):
File "C:\Users\jxue\git\TrendLinkPlot\test.py", line 23, in <module>
objB = ClassB(x=3,y=4)
File "C:\Users\jxue\git\TrendLinkPlot\test.py", line 15, in __init__
super(ClassB, self).__init__(x=kwargs.get('x'), y=kwargs.get('y'))
TypeError: super() argument 1 must be type, not classobj