之前一直以为在python里是不能使用方法覆盖的,结果后来发现可以,这里写一个简单的例子。
class A:
def test(self):
print "i'm a"
class B(A):
def test(self):
print "i'm b"
a = A()
b = B()
a.test()
b.test()
打印输出和预想的一样,输出:
i'm a
i'm b
继承类的test覆盖了基类的test方法。
但是python中似乎是没有方法重载的概念的,因为本身变量类型就不是强定义的。这里还是一个简单的例子。
class A:
def test(self):
print "i'm a"
class B(A):
def test(self):
print "i'm b"
def test(self, iA):
print "%d" % iA
a = A()
b = B()
a.test()
#b.test()
b.test(3)
注释掉的b.test()会报错,提示是必须输入两个参数,但是实际上只输入了一个,即def test(self)被def test(self, iA)给覆盖了,很奇怪这种写法上不会报错,只是在调用的时候才报错。