之前一直以为在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)给覆盖了,很奇怪这种写法上不会报错,只是在调用的时候才报错。
本文通过实例解析Python中方法覆盖的概念,并指出与方法重载的不同之处,特别是通过覆盖基类方法来实现功能扩展的过程。同时,文章强调Python在方法重载方面的独特性,解释为何Python没有传统意义上的方法重载机制。
6320

被折叠的 条评论
为什么被折叠?



