python中實現函式過載

一個正經程式設計師發表於2020-05-23

python中實現函式過載

函式過載指對一個同名的函式,可以傳不同型別的引數,然後進行不同的操作。python預設不支援函式過載,因為下邊的同名函式會覆蓋上邊的函式,但是我們可以藉助functoolssingledispatch實現python中的函式過載
示例:

from functools import singledispatch
class abs:
    def type(self,args):
        pass
class Person(abs):
    @singledispatch
    def type(self,args):
        super().type("",args)
        print("我可以接受%s型別的引數%s"%(type(args),args))

    @type.register(str)
    def _(text):
        print("str",text)

    @type.register(tuple)
    def _(text):
        print("tuple", text)
    @type.register(list)
    @type.register(dict)
    def _(text):
        print("list or dict", text)
Person.type("safly")
Person.type((1,2,3))
Person.type([1,2,3])
Person.type({"a":1})
Person.type(Person,True)

相關文章