这两个不同代码块有撒区别,最后的结果是一样的啊
class A(object): def __init__(self, name): self.name=name print ("name:", self.name) def getName(self): return 'A ' + self.name class B(A): def __init__(self, name): print ("hi") self.name = name def getName(self): return 'B '+self.name if __name__=='__main__': b=B('hello') print( b.getName()) #di二ge class A(object): def __init__(self, name): self.name=name print ("name:", self.name) def getName(self): return 'A ' + self.name class B(A): def __init__(self, name): super(B, self).__init__(name) print ("hi") self.name = name def getName(self): return 'B '+self.name if __name__=='__main__': b=B('hello') print (b.getName())
最后的结果怎么会是一样呢?
第一种的结果是:
hi
B hello
第二种的结果是:
('name:', 'hello')
hi
B hello
第二种里面调用了父类的A.__init__("hello"), 而第一种是override了父类的__init__(self, name) function.