我的代码如下:

class A:
    def TestMethod(self):
        print 'first method'

    def TestMethod(self, i):
        print 'second method', i

ob = A()
ob.TestMethod()
ob.TestMethod(10)


它给出一个错误..

Traceback (most recent call last):
File "stack.py", line 9, in <module>
    ob.TestMethod()
TypeError: TestMethod() takes exactly 2 arguments (1 given)


如何拥有可以使用不同数量的参数调用的方法?

最佳答案

Python不支持方法重载。这对于动态类型的语言非常普遍,因为虽然方法是通过静态类型的语言的完整签名(名称,返回类型,参数类型)来标识的,但是动态类型的语言只能按名称使用。因此,它根本无法工作。

但是,您可以通过指定默认参数值将功能放入方法中,然后可以检查默认参数值以查看是否有人指定了值:

class A:
    def TestMethod(self, i = None):
        if i is None:
            print 'first method'
        else:
            print 'second method', i

关于python - 如何编写可以使用不同数量的参数调用的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30796620/

10-12 22:47