新聞中心
這篇文章主要講解了“Python面向?qū)ο蟮乃拇筇卣魇鞘裁础保闹械闹v解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python面向?qū)ο蟮乃拇筇卣魇鞘裁础卑桑?/p>
成都創(chuàng)新互聯(lián)一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實(shí)效"的一站式服務(wù),以成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、移動(dòng)互聯(lián)產(chǎn)品、成都全網(wǎng)營銷服務(wù)為核心業(yè)務(wù)。十余年網(wǎng)站制作的經(jīng)驗(yàn),使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標(biāo)準(zhǔn)網(wǎng)站,不但價(jià)格便宜而且實(shí)用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡(jiǎn)單易用,維護(hù)方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
#私有方法應(yīng)用場(chǎng)景--發(fā)短信
#私有方法應(yīng)用場(chǎng)景--發(fā)短信 class Test: #核心私有方法,用于發(fā)送短信 def __sendMsg(self): print("---正在發(fā)送短信---") #公共方法 def sendMsg(self,newMoney): if newMoney>10000: #余額大于10000才可以調(diào)用發(fā)短信功能 self.__sendMsg() else: print("抱歉,余額不足,請(qǐng)先充值!") t = Test() t.sendMsg(1000000000)
#帳號(hào)不允許更改 class Person(object): def __init__(self,name,sex): self.__name = name self.__sex = sex def getSex(self): return self.__sex def getName(self): return self.__name def setName(self,newName): if len(newName)>=5: self.__name = newName else: print("名字長(zhǎng)度必須大于等于才可修改!") xiaoming = Person("hoongfu","男") print(xiaoming.getName()) print(xiaoming.getSex()) xiaoming.setName("xiaoming") print(xiaoming.getName())
2.2.1 練習(xí)
定義一個(gè)類Person,類中有私有方法和普通方法,私有屬性和普通屬性
能通過普通方法調(diào)用私有方法,也能通過普通方法更改私有屬性。
class Test(object): def test(self): self.__sex = "保密" print("普通公有方法test") #調(diào)用私有方法 self.__test1() def __test1(self): print("私有方法__test1") #調(diào)用私有屬性 print("私有屬性__sex:",self.__sex) t = Test() t.test()
3. 繼承
3.1繼承的概念
在程序中,繼承描述的是事物之間的所屬關(guān)系,例如貓和狗都屬于動(dòng)物,程序中便可以描述為貓和狗繼承自動(dòng)物;同理,波斯貓和巴厘貓都繼承自貓,而沙皮狗和斑點(diǎn)狗都繼承狗
#繼承
#繼承 class Animal(object): def eat(self): print("----吃----") def dirk(self): print("----喝----") def run(self): print("----跑----") def sleep(self): print("----睡覺----") class Dog(Animal): ''' def eat(self): print("----吃----") def dirk(self): print("----喝----") def run(self): print("----跑----") def sleep(self): print("----睡覺----") ''' def call(self): print("旺旺叫...") class Cat(Animal): def catch(self): print("抓老鼠....") dog = Dog() dog.call() dog.eat() tom = Cat() tom.catch() tom.sleep()
#多繼承
#多繼承 class Animal(object): def eat(self): print("----吃----") def dirk(self): print("----喝----") def run(self): print("----跑----") def sleep(self): print("----睡覺----") class Dog(Animal): def call(self): print("旺旺叫...") class XiaoTq(Dog): def fly(self): print("----飛嘍-------") xtq = XiaoTq() xtq.fly() xtq.call() xtq.eat()
class Cat(object): def __init__(self,name,color="白色"): self.name = name self.color = color def run(self): print("%s -- 在跑"%self.name) class Bosi(Cat): def setName(self,newName): self.name = newName def eat(self): print("%s -- 在吃"%self.name) bs = Bosi("印度貓") print(bs.name) print(bs.color) bs.eat() bs.setName("波斯貓") bs.run()
3.2重寫父類方法與調(diào)用父類方法
所謂重寫,就是子類中,有一個(gè)和父類相同名字的方法,在子類中的方法會(huì)覆蓋掉父類中同名的方法.
使用super調(diào)用父類的方法:可以直接調(diào)用父類方法,不需要通過 父類名.父類方法名 的方式
class Cat(object): def sayHello(self,name): print("hello---1") class Bosi(Cat): def sayHello(self): print("hello---2") #Cat.sayHello(self) super().sayHello("Zhangsan") bs = Bosi() bs.sayHello()
3.3多繼承
多繼承舉例:
class Base(object): def test(self): print("----Base-----") class A(Base): def test(self): print("----test1-----") class B(Base): def test(self): print("----test2-----") class C(A,B): pass c = C() c.test() print(C.__mro__) #可以查看C類的搜索方法時(shí)的先后順序
4.多態(tài)
4.1多態(tài)的定義
所謂多態(tài):定義時(shí)的類型和運(yùn)行時(shí)的類型不一樣,此時(shí)就成為多態(tài)。
多態(tài)指的是一類事物有多種形態(tài),(一個(gè)抽象類有多個(gè)子類,因而多態(tài)的概念依賴于繼承)。
當(dāng)子類和父類都存在相同的print_self()方法時(shí),我們說,子類的print_self()覆蓋了父類的print_self(),在代碼運(yùn)行的時(shí)候,總是會(huì)調(diào)用子類的print_self()。這樣,我們就獲得了繼承的另一個(gè)好處: 多態(tài)。
class Dog(object): def printSelf(self): print("大家好,我是xxx,請(qǐng)大家多多關(guān)照!") class XiaoTq(Dog): def printSelf(self): print("Hello,ereybody,我是你們的老大,我是哮天神犬!") #定義一個(gè)執(zhí)行函數(shù) def exec(obj): """ #定義時(shí)的類型并不知道要調(diào)用哪個(gè)類的方法, 當(dāng)運(yùn)行時(shí)才能確定調(diào)用哪個(gè)類的方法,這種情況,我們就叫做多態(tài) """ obj.printSelf() dog = Dog() exec(dog) xtq = XiaoTq() exec(xtq)
4.2新式類和經(jīng)典類的區(qū)別
新式類都從 object 繼承,經(jīng)典類不需要
Python 2.x中默認(rèn)都是經(jīng)典類,只有顯式繼承了object
Python 3.x中默認(rèn)都是新式類,經(jīng)典類被移除,不必顯式的繼承object
#新式類和經(jīng)典類的區(qū)別 class A: def __init__(self): print('a') class B(A): def __init__(self): A().__init__() print('b') b = B() print(type(b))
class A(): def __init__(self): pass def save(self): print("This is from A") class B(A): def __init__(self): pass class C(A): def __init__(self): pass def save(self): print("This is from C") class D(B,C): def __init__(self): pass fun = D() fun.save()
感謝各位的閱讀,以上就是“Python面向?qū)ο蟮乃拇筇卣魇鞘裁础钡膬?nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Python面向?qū)ο蟮乃拇筇卣魇鞘裁催@一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
分享標(biāo)題:Python面向?qū)ο蟮乃拇筇卣魇鞘裁?
轉(zhuǎn)載來于:http://www.dlmjj.cn/article/jhsdis.html