[关闭]
@Channelchan 2018-09-29T22:27:28.000000Z 字数 1951 阅读 78249

Python继承组合

什么是继承?

你父亲有的你也有,但你有的特有属性和方法你父亲就没有。

1、 继承父类的属性与方法

  1. class Stock:
  2. def __init__(self,stockName, price, volume):
  3. self.stockName=stockName
  4. self.price = price
  5. self.volume = volume
  6. def calAmount(self):
  7. return {self.stockName+'_Amount': self.price*self.volume}
  8. class BABA(Stock):
  9. pass
  10. b = BABA('BABA', 180, 30000).calAmount()
  1. b
{'BABA_Amount': 5400000}

2、 属性覆盖

  1. class Stock:
  2. def __init__(self,stockName, price, volume):
  3. self.stockName=stockName
  4. self.price = price
  5. self.volume = volume
  6. def calAmount(self):
  7. return {self.stockName+'_Amount': self.price*self.volume}
  8. class BABA(Stock):
  9. pass
  10. class TENCETN(Stock):
  11. pass
  12. class BIDU(Stock):
  13. pass
  14. class BuyMaxAmount(Stock):
  15. def __init__(self):
  16. self.haveCapital = True
  17. def buy(self):
  18. if self.haveCapital:
  19. print('I have cash to buy stock')
  20. self.haveCapital = False
  21. else:
  22. print("I don't have any cash now")
  1. BuyMaxAmount('TENCETN', 350, 20000).calAmount()
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-6-64ba8ab1d9a5> in <module>()
----> 1 BuyMaxAmount('TENCETN', 350, 20000).calAmount()


TypeError: __init__() takes 1 positional argument but 4 were given

3、 Super函数

  1. class Stock:
  2. def __init__(self,stockName, price, volume):
  3. self.stockName=stockName
  4. self.price = price
  5. self.volume = volume
  6. def calAmount(self):
  7. return {self.stockName+'_Amount': self.price*self.volume}
  8. class BABA(Stock):
  9. pass
  10. class BuyAmount(Stock):
  11. def __init__(self, stockName, price, volume):
  12. self.haveCapital = True
  13. super().__init__(stockName, price, volume)
  14. def buy(self):
  15. if self.haveCapital:
  16. print('I have cash to buy stock')
  17. self.haveCapital = False
  18. else:
  19. print("I don't have any cash now")
  1. buyBABA = BuyAmount('BABA', 2500, 50000)
  1. buyBABA.buy()
I have cash to buy stock

4、 类组合应用

  1. class StockA:
  2. def __init__(self,price):
  3. self.price = price
  4. class StockB:
  5. def __init__(self, price):
  6. self.price = price
  7. class TwoStock:
  8. def __init__(self, priceA, priceB):
  9. self.stockA = StockA(priceA)
  10. self.stockB = StockB(priceB)
  11. def printStocks(self):
  12. print('StockA $ %d , StockB $ %d '% (self.stockA.price, self.stockB.price))
  13. twoStock = TwoStock(220, 350)
  1. twoStock.printStocks()
StockA $ 220 , StockB $ 350 
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注