猿问

如何在Python中使用方法重载?

我正在尝试在Python中实现方法重载:


class A:

    def stackoverflow(self):    

        print 'first method'

    def stackoverflow(self, i):

        print 'second method', i


ob=A()

ob.stackoverflow(2)

但是输出是second method 2; 类似地:


class A:

    def stackoverflow(self):    

        print 'first method'

    def stackoverflow(self, i):

        print 'second method', i


ob=A()

ob.stackoverflow()


Traceback (most recent call last):

  File "my.py", line 9, in <module>

    ob.stackoverflow()

TypeError: stackoverflow() takes exactly 2 arguments (1 given)

我该如何工作?


ITMISS
浏览 490回答 3
3回答

青春有我

它是方法重载而不是方法重写。而在Python中,您可以通过一个函数完成所有操作:class A:&nbsp; &nbsp; def stackoverflow(self, i='some_default_value'):&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; print 'only method'ob=A()ob.stackoverflow(2)ob.stackoverflow()在Python中,不能有两个具有相同名称的方法,而且也不需要。请参阅Python教程的默认参数值部分。有关避免的常见错误,请参见“最少惊讶”和“可变默认参数 ”。编辑:有关Python 3.4中新的单调度通用功能的信息,请参见PEP 443。
随时随地看视频慕课网APP

相关分类

Python
我要回答