当我假设一种语言的概念,特别是C++ +爪哇/其他的参数“函数重载”(1),在这种情况下,在另一个Python中工作时,类型错误就发生在我身上。一般来说,Python的评估需要一些详细的建议,但我认为这需要一些人的建议。在
代码1:
class Toolbox:
trayA = ()
trayB = ()
def __init__(self):
self.trayA = ("nail", "screw")
self.trayB = ("hammer", "nail", "long nail")
def __init__(self,tA,tB):
self.trayA = tA
self.trayB = tB
#Instance defs
tb = Toolbox()
#tb = Toolbox(("n1","n2","n5"),("screwdriver","long screw"))
#Test
print(tb.trayA)
print(tb.trayB)
结果:
“类型错误:init()只接受3个参数(给定1个)”
分析:
*预期的参数数3与定义的2的第二个init定义匹配。
*使用第二个定义2。在
代码2:
说明:
从代码1中,删除了对3-param调用的注释。
注释掉了1-param调用。
结果:
通过(即无错误)
代码3:
说明:
从代码1开始,初始定义的交换顺序。
结果:
通过
代码4:
说明:
从代码3中,注释掉了1-param调用,并取消了3-param调用的注释
结果:
Fail“TypeError:init()只接受1个参数(给定3个)”
我认为,当听众是技术性的,作者有足够的知识,有足够的时间考虑细节的条件(如果在一个概念上不够强大,不能立即使用这个术语),那么就必须具体化。感谢Paul Rooney帮助我更具体地说,用“函数重载”[1]代替了“多态性”[2,3],尤其是在我使用了“特别”这个词之后。在
[1]:“函数重载”。维基百科。https://en.wikipedia.org/wiki/Function_overloading。访问日期:2017年9月20日。
[2] :Cohoon和Davidson。C++程序设计。第3版,2002年。
[3] :“多态性(计算机科学)”。维基百科。en.wikipedia.org/wiki/polymorphic_(计算机科学)。访问日期:2017年9月20日。
如果有多个函数具有相同的名称,python将使用最后一个函数。 使用pythonic方法生成不同的构造函数如下:
输出
^{pr2}$python也将此方法用于python
type()
。 可以检查变量类型:或者你可以用它来上课。在
等于:
谢谢你们的建议。 根据johngordon和AndMar先前提供的使用*argv的建议,我修改了代码以处理多个参数输入。在
结果
^{pr2}$相关问题 更多 >
编程相关推荐