python子类继承_Python:子类可以重载继承的方法吗?

本文探讨了Python中重写方法时参数处理的规范,强调了调用者未知具体类时参数一致性的重要性,并通过实例展示了如何使用关键字参数以增加灵活性。作者质疑大量忽略参数的做法是否合理,提出了参数可能是对象状态的观点。
摘要由CSDN通过智能技术生成

原则上,重写的方法不必具有彼此相同的参数,但它们必须具有调用它们时使用的相同形式参数。因此,由于任何处理程序都可以由get调用body,所以它们必须是相同的。对于这一点,重写的要点是调用方不知道对象的确切类,因此如果它们都没有相同的参数,通常调用方不知道传递什么。因此,我认为,使用不同参数进行覆盖是一种不寻常的伎俩。

如果您更改了它调用的参数,则必须更改函数以匹配。这与继承无关,而是Python函数的工作方式。

如果需要更大的灵活性,可以使用关键字参数,这是将字典作为参数传递的一种奇特方式:class Detail(BaseHandler):

def body(self, **kwargs):

print kwargs['CSIN']

class MainPage(BaseHandler):

def body(self, **kwargs): # can ignore kwargs

class Cart(BaseHandler):

def body(self, **kwargs): # can ignore kwargs

class BaseHandler(webapp.RequestHandler):

def get(self, CSIN=None):

self.body(CSIN = CSIN, some_new_arg = 3)

class SomeNewHandler(BaseHandler):

def body(self, **kwargs):

print kwargs['some_new_arg']

不过,我确实有点怀疑这种做法是否明智:如果要大量添加新参数,而大多数实现忽略了大多数参数,那么body可能并不是这些参数的函数。实际上,这些参数可能是handler对象状态的一部分,您只是碰巧将其作为参数传递。显然,这种差异有些主观——对于每个对象只调用一次函数来说,传递字典和使用self作为字典之间并没有太大的实际差异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值