gpt4 book ai didi

python - 区分覆盖和重载

转载 作者:行者123 更新时间:2023-11-28 20:11:04 27 4
gpt4 key购买 nike

我有两个python类

  1. 喝醉了
  2. 常醉

通常的 drunk 类继承自 drunk 并为其 move 方法提供了新的实现,如下所示

class Drunk:
def __init__(self,name):
self.name = name

def move(self,field,cp,dist=1):
if field.getDrunk().name!= self.name:
raise ValueError('Drunk not in the field!')
for i in range(dist):
#pt = CompassPt(random.choice(CompassPt.possibles))
field.move(cp,1)


class UsualDrunk(Drunk):
def move(self,field,dist=1):
cp = random.choice(CompassPt.possibles)
Drunk.move(self,field,CompassPt(cp),dist)

现在通常的 drunk 类有两个名为 move 的方法,但参数不同。

那么在这种情况下它是覆盖还是重载?

最佳答案

这是压倒性的。 Python 不支持重载。

也就是说,用一个接受不同参数的方法覆盖一个方法,尤其是当它接受的参数比基类方法时,是一个坏主意。考虑:

some_drunk.move(field, cp)

如果 some_drunk 是一个普通的 Drunk,这会起作用。但如果它是 UsualDrunk,它会将 cp 的值传递给 dist 参数,这可能不是预期的。

关于python - 区分覆盖和重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5288601/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com