[关闭]
@Channelchan 2018-09-29T22:26:24.000000Z 字数 2192 阅读 78045

Python面向对象

1、 什么是对象

属性+方法=类

同一个类可以生成无数个对象

一只股票的属性: 市值,成交量,价格...

方法: 获取股票的市值、成交量,计算成交额

2、 通常命名方式

  1. class StockA:
  2. price=20
  3. volume=10000
  4. def calAmount():
  5. return price*volume
  6. # 实例化类对象
  7. checkStockA = StockA()
  8. checkStockA.calAmount()
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-2-89ad93b50f09> in <module>()
      7 # 实例化类对象
      8 checkStockA = stockA()
----> 9 checkStockA.calAmount()


TypeError: calAmount() takes 0 positional arguments but 1 was given

3、 self

类方法必须包含参数 self,且为第一个参数,隐藏并默认的要求。

  1. class StockA:
  2. marketvalue=50000
  3. price=20
  4. volume=10000
  5. def calAmount(self):
  6. return self.price*self.volume
  7. # 实例化类对象
  8. checkStockA = StockA()
  9. checkStockA.calAmount()
200000

4、 一个类生成多个对象

  1. class stock:
  2. def getToday(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. # 实例化类创建类对象
  9. stockBABA = stock()
  10. stockBABA.getToday('BABA', 180, 30000)
  11. print(stockBABA.calAmount())
  12. stockTencent = stock()
  13. stockTencent.getToday('Tencent', 350, 20000)
  14. print(stockTencent.calAmount())
  15. stockBIDU = stock()
  16. stockBIDU.getToday('BIDU', 230, 10000)
  17. print(stockBIDU.calAmount())
{'BABA_Amount': 5400000}
{'Tencent_Amount': 7000000}
{'BIDU_Amount': 2300000}

5、init

实例化时自动运行

  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. stockBABA = stock('BABA', 180, 30000)
  9. print(stockBABA.calAmount())
  10. stockTencent = stock('Tencent', 350, 20000)
  11. print(stockTencent.calAmount())
  12. stockBIDU = stock('BIDU', 230, 10000)
  13. print(stockBIDU.calAmount())
{'BABA_Amount': 5400000}
{'Tencent_Amount': 7000000}
{'BIDU_Amount': 2300000}

6、 公有/私有变量

  1. # 公有变量名
  2. class stockBABA:
  3. name = 'BABA'
  4. stockName = stockBABA()
  5. stockName.name
'BABA'
  1. # 私有变量名
  2. class stockBABA:
  3. __name = 'BABA'
  4. stockName = stockBABA()
  5. stockName.__name
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-24-aa8ac6c7289a> in <module>()
      3     __name = 'BABA'
      4 stockName = stockBABA()
----> 5 stockName.__name


AttributeError: 'stockBABA' object has no attribute '__name'
  1. # 伪私有变量名: _类名__变量名
  2. class stockBABA:
  3. __name = 'BABA'
  4. stockName = stockBABA()
  5. stockName._stockBABA__name
'BABA'
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注