@Channelchan
2018-09-29T14:26:24.000000Z
字数 2192
阅读 78233
属性+方法=类
同一个类可以生成无数个对象
一只股票的属性: 市值,成交量,价格...
方法: 获取股票的市值、成交量,计算成交额
class StockA:price=20volume=10000def calAmount():return price*volume# 实例化类对象checkStockA = StockA()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
类方法必须包含参数 self,且为第一个参数,隐藏并默认的要求。
class StockA:marketvalue=50000price=20volume=10000def calAmount(self):return self.price*self.volume# 实例化类对象checkStockA = StockA()checkStockA.calAmount()
200000
class stock:def getToday(self,stockName, price, volume):self.stockName=stockNameself.price = priceself.volume = volumedef calAmount(self):return {self.stockName+'_Amount': self.price*self.volume}# 实例化类创建类对象stockBABA = stock()stockBABA.getToday('BABA', 180, 30000)print(stockBABA.calAmount())stockTencent = stock()stockTencent.getToday('Tencent', 350, 20000)print(stockTencent.calAmount())stockBIDU = stock()stockBIDU.getToday('BIDU', 230, 10000)print(stockBIDU.calAmount())
{'BABA_Amount': 5400000}
{'Tencent_Amount': 7000000}
{'BIDU_Amount': 2300000}
实例化时自动运行
class stock:def __init__(self,stockName, price, volume):self.stockName=stockNameself.price = priceself.volume = volumedef calAmount(self):return {self.stockName+'_Amount': self.price*self.volume}stockBABA = stock('BABA', 180, 30000)print(stockBABA.calAmount())stockTencent = stock('Tencent', 350, 20000)print(stockTencent.calAmount())stockBIDU = stock('BIDU', 230, 10000)print(stockBIDU.calAmount())
{'BABA_Amount': 5400000}
{'Tencent_Amount': 7000000}
{'BIDU_Amount': 2300000}
# 公有变量名class stockBABA:name = 'BABA'stockName = stockBABA()stockName.name
'BABA'
# 私有变量名class stockBABA:__name = 'BABA'stockName = stockBABA()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'
# 伪私有变量名: _类名__变量名class stockBABA:__name = 'BABA'stockName = stockBABA()stockName._stockBABA__name
'BABA'
