溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python面向?qū)ο缶幊痰暮诵母拍钪R(shí)點(diǎn)是什么

發(fā)布時(shí)間:2021-11-23 10:56:13 來(lái)源:億速云 閱讀:194 作者:柒染 欄目:大數(shù)據(jù)

這篇文章給大家介紹Python面向?qū)ο缶幊痰暮诵母拍钪R(shí)點(diǎn)是什么,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

面向?qū)ο缶幊痰暮诵母拍睿悍庋b,抽象,多態(tài)、繼承、組合

封裝:

第一個(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()

多態(tài):

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ò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI