国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python面向?qū)ο蠡A(chǔ)入門(mén)之編碼細(xì)節(jié)與注意事項(xiàng)

2020-02-16 00:04:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

在前面,我用了3篇文章解釋python的面向?qū)ο螅?/p> 面向?qū)ο螅簭拇a復(fù)用開(kāi)始 面向?qū)ο螅涸O(shè)置對(duì)象屬性 類和對(duì)象的名稱空間

本篇是第4篇,用一個(gè)完整的示例來(lái)解釋面向?qū)ο蟮囊恍┘?xì)節(jié)。

例子的模型是父類Employe和子類Manager,從類的定義開(kāi)始,一步步完善直到類變得完整。

定義Person類

現(xiàn)在,假設(shè)Employe類有3個(gè)屬性:名字name、職稱job和月薪水pay。

定義這個(gè)類:

class Employe(): def __init__(self, name, job=None, pay=0): self.name = name self.job = job self.pay = pay

這里為_(kāi)_init__()的job參數(shù)提供了默認(rèn)值:None,表示這個(gè)員工目前沒(méi)有職稱。對(duì)于沒(méi)有職稱的人,pay當(dāng)然也應(yīng)該是0。這樣創(chuàng)建Employe對(duì)象的時(shí)候,可以只給參數(shù)name。

例如:

if __name__ == "__main__": longshuai = Employe("Ma Longshuai") xiaofang = Employe("Gao Xiaofang", job="accountant", pay=15000)

上面的if判斷表示這個(gè)py文件如果當(dāng)作可執(zhí)行程序而不是模塊,則執(zhí)行if內(nèi)的語(yǔ)句,如果是以模塊的方式導(dǎo)入這個(gè)文件,則if內(nèi)的語(yǔ)句不執(zhí)行。這種用法在測(cè)試模塊代碼的時(shí)候非常方便。

運(yùn)行該py文件,得到結(jié)果:

<__main__.Employe object at 0x01321690>
<__main__.Employe object at 0x01321610>

添加方法

每個(gè)Employe對(duì)象的name屬性由姓、名組成,中間空格分隔,現(xiàn)在想取出每個(gè)對(duì)象的名。對(duì)于普通的姓 名字符串,可以使用字符串工具的split()函數(shù)來(lái)處理。

例如:

>>> name = "Ma Longshuai">>> name.split()[-1]'Longshuai'

于是可以在longshuai和xiaofang這兩個(gè)Employe對(duì)象上:

print(longshuai.name.split()[-1])print(xiaofang.name.split()[-1])

結(jié)果:

Longshuai
Xiaofang

與之類似的,如果想要為員工按10%加薪水,可以在每個(gè)Employe對(duì)象上:

xiaofang.pay *= 1.1print(xiaofang.pay)

無(wú)論是截取name的名部分,還是加薪水的操作,都是Employe共用的,每個(gè)員工都可以這樣來(lái)操作。所以,更合理的方式是將它們定義為類的方法,以便后續(xù)的代碼復(fù)用:

class Employe(): def __init__(self, name, job=None, pay=0): self.name = name self.job = job self.pay = pay def lastName(self): return self.name.split()[-1] def giveRaise(self, percent): self.pay = int(self.pay * (1 + percent))if __name__ == "__main__": longshuai = Employe("Ma Longshuai") xiaofang = Employe("Gao Xiaofang", job="accountant", pay=15000)  print(longshuai.lastName()) print(xiaofang.lastName()) xiaofang.giveRaise(0.10) print(xiaofang.pay)

上面的giveRaise()方法中使用了int()進(jìn)行類型轉(zhuǎn)換,因?yàn)檎麛?shù)乘以一個(gè)小數(shù),返回結(jié)果會(huì)是一個(gè)小數(shù)(例如15000 * 0.1 = 1500.0)。這里我們不想要這個(gè)小數(shù),所以使用int()轉(zhuǎn)換成整數(shù)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 景德镇市| 平利县| 车险| 浮梁县| 宜黄县| 塔城市| 九台市| 阿城市| 保康县| 禹州市| 年辖:市辖区| 福建省| 澄迈县| 苏尼特右旗| 响水县| 潮安县| 通许县| 福建省| 申扎县| 大连市| 平江县| 全南县| 平凉市| 罗定市| 兰州市| 呼伦贝尔市| 遵义市| 阿克陶县| 万州区| 天峨县| 固原市| 正蓝旗| 铁力市| 于都县| 莆田市| 八宿县| 罗城| 诸暨市| 新邵县| 公安县| 丹凤县|