跳至主要內容

方法没有重载

刘春龙原创...大约 1 分钟Python教程文档

如果我们在类体中定义了多个重名的方法,只有最后一个方法有效。

建议:不要使用重名的方法!Python 中方法没有重载。

提示

  • 在其他一些语言(比如:Java)中,可以定义多个重名的方法,只要保证方法签名唯一即可。方法签名包含 3 个部分:方法名、参数数量、参数类型。
  • Python 中,方法的的参数没有声明类型(调用时确定参数的类型),参数的数量也可以由可变参数控制。因此,Python 中是没有方法的重载的。
class Person:
    def say_hi(self):
        print("hello")

    def say_hi(self, name):
        print(f"{name}")

p1 = Person()
# p1.say_hi()   # 报错
p1.say_hi("JAIMEI")

方法的动态性

Python 是动态语言,我们可以动态的为类添加新的方法,或者动态的修改类的已有的方法

class Person:
    def work(self):
        print("努力上班!")


def play_game(s):   # s参数代表必传的self参数
    print("玩游戏")


def work2(s):
    print("好好工作,努力上班!")


Person.play = play_game  # 新增
Person.work = work2   # 覆盖
p = Person()
p.play()
p.work()

我们可以看到,Person动态的新增了play_game方法,以及用work2替换了work方法

上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7