Python OOP中如何在继承中避免代码重复设计

本文讨论了代码重复设计的问题,并提供了一种改进方案,即通过优化父类设计来减少重复代码,进而提高代码的可维护性和可读性。

       代码的重复设计可能会导致重复的问题出现以及重复的维护工作,这不仅仅是工作时间的增加,有时候也会带来很多维护上的困难。从继承角度来看,很多代码的重复是因为代父类的设计不够好。下面通过对比两段代码来看一下相应的问题:

代码1:

class Card:

       pass

 

classNumberCard(Card):

       def __init__(self,rank,suit):

              self.rank = str(rank)

              self.suit = suit

              self.hard = self.soft = rank

 

classAceCard(Card):

       def __init__(self,rank,suit):

              self.rank = 'A'

              self.suit = suit

              self.hard,self.soft = 1,11

             

classFaceCard(Card):

       def __init__(self,rank,suit):

              self.rank ={11:'J',12:'Q',13:'K'}[rank]

              self.suit = suit

              self.hard = rank.soft = 10

 

       上面的代码能够成功的创建出不同的类用来表达不同的纸牌概念,但是从代码的构件上可以看出,有很多代码的形式是重复的。如何对此进行改进呢?比较好的方法就是把重复的内容设计到父类中。具体的代码如下:

class Card:

       def __init__(self,rank,suit,hard,soft):

              self.rank = rank

              self.suit = suit

              self.hard = hard

              self.soft = soft

 

classNumberCard(Card):

       def __init__(self,rank,suit):

              super().__init__(str(rank),suit,rank,rank)

 

classAceCard(Card):

       def __init__(self,suit):

              super().__init__('A',suit,1,11)

 

classFaceCard(Card):

       def __init__(self,rank,suit):

              super().__init__({11:'J',12:'Q',13:'K'}[rank],suit,10,10)

 

       上面的这段代码中,重复设计的东西少了很多。更多的是对设计好的方法进行调用,这样的代码在程序的维护以及重构上就要方便的多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值