我有两个python类
通常的醉酒类继承自醉酒类,并为其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)
现在,通常的醉酒类有两个名为move的方法,但参数不同。
那么在这种情况下,它是重写还是重载?
这是压倒一切的。Python不支持重载。
也就是说,用一个接受不同参数的方法重写一个方法,特别是当它接受的参数比基类方法少时,是一个坏主意。考虑:
如果
some_drunk
是一个正则的Drunk
,则此操作有效。但是如果它是UsualDrunk
,它将把cp
的值传递给dist
参数,这可能不是我们想要的。相关问题 更多 >
编程相关推荐