【python】python的方法覆盖

来源:互联网 发布:淘宝集美海外专营店 编辑:程序博客网 时间:2024/05/16 01:08

之前一直以为在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" % iAa = A()b = B()a.test()#b.test()b.test(3)

注释掉的b.test()会报错,提示是必须输入两个参数,但是实际上只输入了一个,即def test(self)被def test(self, iA)给覆盖了,很奇怪这种写法上不会报错,只是在调用的时候才报错。

原创粉丝点击