大佬教程收集整理的这篇文章主要介绍了继承最佳实践:* args,** kwargs或显式指定参数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
通常,您不希望方法签名在派生类型中有所不同。如果要交换派生类型的使用,可能会导致问题。这通常称为Liskov替代原理。
同时,我不认为这是正确的为您的所有方法有一个签名*args
,**kwargs
。显式签名:
不要将变长参数误认为是良好的耦合实践。父类和派生类之间应该有一定的凝聚力,否则它们将不会相互关联。相关代码导致耦合反映内聚程度是正常的。
使用可变长度参数不应该是您的第一选择。当您有充分的理由时应使用它:
如果发现自己经常创建带有许多参数的方法或带有不同签名的派生方法,那么在组织代码的方式上可能会遇到更大的问题。
我经常发现自己会覆盖父类的方法,并且永远无法决定是应该显式列出给定的参数还是仅使用通用*args,**kwargs
结构。一个版本比另一个版本好吗?有最佳做法吗?我缺少什么(缺点)?
class Parent(object):
def save(self,commit=True):
# ...
class Explicit(Parent):
def save(self,commit=True):
super(Explicit,self).save(commit=commit)
# more logic
class Blanket(Parent):
def save(self,*args,**kwargs):
super(Blanket,self).save(*args,**kwargs)
# more logic
显式变体的感知好处
毯子变体的感知优势
以上是大佬教程为你收集整理的继承最佳实践:* args,** kwargs或显式指定参数全部内容,希望文章能够帮你解决继承最佳实践:* args,** kwargs或显式指定参数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。