我似乎无法在互联网上找到这个问题的答案。在Python中,我能做到这样的事情:
class MyClass(object):
"""It's my class, yo!"""
def __init__(self, string_of_interest_1):
self.string1 = string_of_interest_1
self.string2 = None
self.int1 = None
def __init__(self, string_of_interest_1, string_of_interest2):
self.string1 = string_of_interest_1
self.string2 = string_of_interest_2
self.int1 = None
def __init__(self, int_of_interest_1):
self.string1 = None
self.string2 = None
self.int1 = int_of_interest_1
我称之为“方法重载”,但似乎标准重载是当我有一些变量时,我在调用本身内分配了一个默认值。 (例如,def __init__(self, string_of_interest_1, string_of_interest_2 = None)
)虽然这个小例子没有证明它,但我希望有可能拥有真正不同的方法,具体取决于传递给它的参数的数量和类型。
谢谢!
答案 0 :(得分:2)
在python中没有函数或方法的重载,但是有一个变化 - * args和** kwargs。例如:
>>def test(*args, **kwargs):
>> print args # list of positional parametrs
>> print kwargs # dict of named parametrs
>>test(1, 2, test_param='t')
[1, 2]
{test_param: 't'}
答案 1 :(得分:1)
Python中的所有变量都是对象,即使int
也是对象。
C
,JAVA
等中使用的方法覆盖。
Python有魔术变量*
和**
。 *
用于位置参数,**
用作关键字参数
试试这个
def test_method(*args, **kwargs):
print args
print kwargs
使用不同的不同参数调用此函数,您将了解这些神奇的方法。
答案 2 :(得分:1)
即使您的函数不知道数字,您也可以获取所需的所有参数。语法是使用符号*来接受可变数量的参数;按照惯例,它经常与args这个词一起使用。 * args允许你做的是接受比你之前定义的正式参数的正常更多的参数。检查此主题以查看如何执行此操作的示例