【Python】关于python中overload装饰器详解
Python不像C++、Java等语言可以进行函数的重载。Python是不可以进行函数重载的。下面的例子,虽然我们定义了三个test函数,但是在局部命名空间下,只有一个test函数,就是最有一个,也就是说最后一个test覆盖了前两个test。也就是说,和typing这module里面其他东西的功能一样,@overload装饰器其实只是一种注解/提示:该函数允许传入不同的参数类型组合。最终,所有加了
·
Python不像C++、Java等语言可以进行函数的重载。Python是不可以进行函数重载的。下面的例子,虽然我们定义了三个test函数,但是在局部命名空间下,只有一个test函数,就是最有一个,也就是说最后一个test覆盖了前两个test。
def test():
print("test")
def test(arg):
print(arg)
def test(arg1, arg2):
print(arg1, arg2)
test() # 报错
test(1) # 报错
test(1,2) # 正常运行
在类的内部也是这样,不允许方法重载
class Test:
def test(self):
print("test")
def test(self, arg1):
print(arg1)
t = Test()
t.test() # 报错
t.test(1) # 正常运行
overload装饰器:
官方文档中的介绍是这样的:

也就是说,和typing这module里面其他东西的功能一样,@overload装饰器其实只是一种注解/提示:该函数允许传入不同的参数类型组合。最终,所有加了@overload装饰器的方法都会被一个不加装饰器的方法覆盖掉。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)