您好,登錄后才能下訂單哦!
這篇文章給大家介紹Python面向?qū)ο缶幊痰暮诵母拍钪R(shí)點(diǎn)是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
第一個(gè)概念:在面向?qū)ο缶幊讨?,?duì)象將變量和方法集中在一個(gè)地方,即對(duì)象本身。
第二個(gè)概念:指的是隱藏類(lèi)的內(nèi)部數(shù)據(jù),避免客戶端代碼直接進(jìn)行訪問(wèn)。
class Data: def __init__(self): self.list1=[22,33,44,55,66] def chang_list(self,index,num): self.list1[index]=num data1=Data() data1.list1[0]=100 print(data1.list1) data2=Data() data2.chang_list(0,100) print(data2.list1)
它是指剝離事物的諸多特性,使其只保留最基本的物質(zhì)的過(guò)程。在面向?qū)ο缶幊讨校褂妙?lèi)進(jìn)行對(duì)象建模時(shí)就會(huì)用到抽象的技巧。
import abc class Animal(metaclass=abc.ABCMeta): @abc.abstractmethod #抽象的對(duì)象方法 def sound(self): pass @abc.abstractclassmethod#抽象的類(lèi)方法 def test1(cls): pass @abc.abstractstaticmethod#抽象的靜態(tài)方法 def test2(self): pass class Dog(Animal): def sound(self): print("wang wang") @classmethod def test1(cls): print("class of method") @staticmethod def test2(): print("static of method") dog=Dog() dog.sound() dog.test1() Dog.test1() dog.test2() Dog.test2()
1)、將公共的屬性和方法放到父類(lèi)中,自己只考慮特有的屬性和方法。
2)、覆蓋父類(lèi)的方法即重寫(xiě)父類(lèi)方法,在運(yùn)行中只會(huì)調(diào)用子類(lèi)中重寫(xiě)的方法不用調(diào)用父類(lèi)中的方法。
3)、子類(lèi)擁有一個(gè)父類(lèi)叫作單繼承,子類(lèi)可以擁有多個(gè)父類(lèi),并且具有所有父類(lèi)的屬性和方法。
class Student: def study(self): print("學(xué)生要學(xué)習(xí)") def practice(self): print("學(xué)習(xí)完成要練習(xí)") class HighStudent(Student): def study_compute(self): print("高中同學(xué)還要學(xué)習(xí)計(jì)算機(jī)") hs=HighStudent() hs.study() hs.practice() hs.study_compute()
1)、指的是為不同的基礎(chǔ)形態(tài)(數(shù)據(jù)類(lèi)型)提供著接口的能力,接口指的是函數(shù)和方法。
2)、顧名思義,多態(tài)就是多種表現(xiàn)形態(tài)的意思,它是一種機(jī)制,一種能力,而非某個(gè)關(guān)鍵詞。它在類(lèi)的繼承中得以實(shí)現(xiàn),在類(lèi)的方法調(diào)用中得以體現(xiàn)。
3)、多態(tài)意味著變量并不知道引用的對(duì)象是什么,根據(jù)引用對(duì)象的不同表現(xiàn)不同的行為方式。
4)、多態(tài)以封裝和繼承為前提,不同的子類(lèi)對(duì)象調(diào)用相同的方法,產(chǎn)生不同的執(zhí)行效果。它可以增加代碼的靈活度,以繼承和重寫(xiě)父類(lèi)的方法為前提,調(diào)用方法不會(huì)影響到類(lèi)的內(nèi)部設(shè)計(jì)
class Animals(object): def __init__(self,name): self.name=name def eat(self): print(self.name+" is eating") class Cat(Animals): def __init__(self,name): super(Cat, self).__init__(name) class Pig(Animals): def __init__(self,name): super(Pig, self).__init__(name) class Person(): def feedAnimal(self,animal): animal.eat() cat=Cat("tom") pig=Pig("peiqi") tony=Person() tony.feedAnimal(cat) tony.feedAnimal(pig)
1)、通過(guò)組合技巧將一個(gè)對(duì)象作用變量保存在另一個(gè)對(duì)象中,可以模擬擁有關(guān)系。
2)、它是一種將對(duì)象或類(lèi)組合成更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)或構(gòu)件實(shí)現(xiàn)的方法。
3)、在組合中,一個(gè)對(duì)象可用于調(diào)用其他模塊中的成員函數(shù),這樣一來(lái),無(wú)需通過(guò)繼承就可以實(shí)現(xiàn)基本功能的跨模塊調(diào)用。
class Monkey(): def __init__(self,name,owner): self.name=name self.owner=owner class Persons(): def __init__(self,name): self.name=name mike=Persons("mike") mickMouse=Monkey("goldeMonkey",mike) print(mickMouse.owner.name) class A(object): def a1(self): print("a1") class B(object): def b1(self): print("b1") A().a1() bb=B() bb.b1()
關(guān)于Python面向?qū)ο缶幊痰暮诵母拍钪R(shí)點(diǎn)是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。