测试python是否有类似Java重载的操作,只关注常用部分,不钻牛角尖

python基本上没有重载,因为在python一切都是对象,那么函数的名称也是一个对象的引用,当存在相同函数名时,可以理解为该变量名引用地址的改变,即钱一个变量的地址会被后一个覆盖。

python是有重载的,如对字符串和数值变量add运算时,会自动调用重载的。

print('a' + 'b') ---> ab
print(1 + 2)	 ---> 3

以上,可充分证明python存在重载。

重载的操作很有趣,主要是指:函数或方法具有相同的名称,但是在参数的类型以及数量方面出现差异(与排序无关)时,那么在调用该函数时可根据传递参数判断使用哪一个函数或方法。

# 测试python是否有重载,还是python只有重写


class Zoo(object):
    def __init__(self, name, age, gender, isDanger):
        self.name = name
        self.age = age
        self.gender = gender
        self.isDanger = isDanger

    def age_setter(self, num):
        self.age = num
        return self.age

    def age_setter(self, num, desc):
        self.age = num
        print(desc)
        return self.age


dog = Zoo(name='dog', age=12, gender='male', isDanger=False)
dog.age_setter(11, '修改了年龄')

当两个函数调换顺序,即会报错。

以上,事实证明python中并没有存在重载,而只是存在了重写,即可以理解为覆盖。

版权声明:本文为W-Wang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/W-Wang/p/12827781.html