Python 如何编写一个可以使用不同数量的参数调用的方法?
我的代码如下:Python 如何编写一个可以使用不同数量的参数调用的方法?,python,Python,我的代码如下: 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
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)
回溯(最近一次呼叫最后一次):
文件“stack.py”,第9行,在
ob.TestMethod()
TypeError:TestMethod()正好接受2个参数(给定1个)
我怎样才能拥有一个可以用不同数量的参数调用的方法?Python不支持方法重载。这在动态类型语言中非常常见,因为在静态类型语言中,方法是通过其完整签名(名称、返回类型、参数类型)来标识的,而动态类型语言只通过名称来标识。所以它就是不能工作 但是,您可以通过指定默认参数值将功能放在方法中,然后可以检查是否有人指定了值:
class A:
def TestMethod(self, i = None):
if i is None:
print 'first method'
else:
print 'second method', i
Python不支持方法重载。这在动态类型语言中非常常见,因为在静态类型语言中,方法是通过其完整签名(名称、返回类型、参数类型)来标识的,而动态类型语言只通过名称来标识。所以它就是不能工作 但是,您可以通过指定默认参数值将功能放在方法中,然后可以检查是否有人指定了值:
class A:
def TestMethod(self, i = None):
if i is None:
print 'first method'
else:
print 'second method', i
如果您只想选择性地传递一个参数,那么可以使用poke的解决方案。如果您真的想提供对大量可选参数的支持,那么应该使用args和kwargs
class A:
def TestMethod(self, *args):
if not args:
print 'first method'
else:
print 'second method', args[0]
如果您只想选择性地传递一个参数,那么可以使用poke的解决方案。如果您真的想提供对大量可选参数的支持,那么应该使用args和kwargs
class A:
def TestMethod(self, *args):
if not args:
print 'first method'
else:
print 'second method', args[0]
如何做到这一点?您是如何尝试实现这一点的?在python中,重载并不常见(但使用decorator等也不是不可能)。改用关键字参数
deftestmethod(self,i=None)
。然后检查i和switch behavior查看*args和**kwargs以向函数提供变量,但请注意,pylint等静态分析工具不鼓励这样做,它们会因为编写复杂代码而责骂您如何实现这一点?您是如何尝试实现这一点的?在python中,重载并不常见(但使用decorator等也不是不可能)。改用关键字参数deftestmethod(self,i=None)
。然后检查i和switch behavior查看*args和**kwargs以向函数提供变量,但请注意,pylint等静态分析工具不鼓励这样做,它们会因为编写复杂的代码而对您进行批评