欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python之初識(shí)面向?qū)ο?創(chuàng)新互聯(lián)

一、OOP

oop就是代碼的重用,通過(guò)分解代碼,最小化代碼的冗余以及對(duì)現(xiàn)存的代碼進(jìn)行定制來(lái)編寫(xiě)程序;OOP模型中有兩種對(duì)象,類(lèi)對(duì)象和實(shí)例對(duì)象。類(lèi)對(duì)象提供默認(rèn)行為,是生產(chǎn)實(shí)例對(duì)象的工廠(chǎng);類(lèi)對(duì)象和實(shí)例對(duì)象都有各自命名空間。

十多年的忻府網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整忻府建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“忻府網(wǎng)站設(shè)計(jì)”,“忻府網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

二、python類(lèi)的主要特性

? class語(yǔ)句創(chuàng)建類(lèi)對(duì)象并將其賦值給變量名
? class語(yǔ)句內(nèi)的頂層賦值語(yǔ)句會(huì)創(chuàng)建類(lèi)的屬性
? 類(lèi)屬性提供對(duì)象的狀態(tài)和行為

三、python實(shí)例對(duì)象的主要特性

? 每次類(lèi)調(diào)用時(shí),都會(huì)創(chuàng)建并返回新的實(shí)例對(duì)象
? 每個(gè)實(shí)例對(duì)象繼承類(lèi)的屬性并獲得了自己的命名空間
? 每個(gè)實(shí)例對(duì)象通過(guò)構(gòu)造方法獲得每個(gè)實(shí)例自己的屬性

四、創(chuàng)建類(lèi)和實(shí)例對(duì)象-類(lèi)的封裝

封裝,是將對(duì)象的數(shù)據(jù)與操作數(shù)據(jù)的方法相結(jié)合,通過(guò)方法將對(duì)象的數(shù)據(jù)與實(shí)現(xiàn)細(xì)節(jié)保護(hù)起來(lái),就稱(chēng)為封裝。外界只能通過(guò)對(duì)象的方法訪(fǎng)問(wèn)對(duì)象,因此封裝同時(shí)也實(shí)現(xiàn)了對(duì)象的數(shù)據(jù)隱藏

class Person():
#類(lèi)的屬性--靜態(tài)屬性
country="China"

#封裝--初始化方法
def __init__(self,*args):
    self.name=args[0]
    self.age=args[1]
    self.aggr=args[2]
    self.sex=args[3]

#方法
def walk(self,n):
    print("%szoule%sbu"%(self.name,n))

#調(diào)用類(lèi)創(chuàng)建實(shí)例對(duì)象,自動(dòng)執(zhí)行構(gòu)造方法__init__
jonny=Person('jonny',11,23,'man')

#實(shí)例對(duì)象調(diào)用類(lèi)的方法
jonny.walk(10)

#實(shí)例對(duì)象調(diào)用類(lèi)的屬性
print(jonny.country)

五、類(lèi)的繼承

單繼承

類(lèi)可以通過(guò)繼承進(jìn)行定制;類(lèi)的繼承豐富了軟件的層級(jí),在層級(jí)較低的地方覆蓋現(xiàn)有的屬性,讓其行為特定化。
在python中,實(shí)例對(duì)象從類(lèi)中繼承,而類(lèi)繼承于超類(lèi)
? 超類(lèi)寫(xiě)在類(lèi)開(kāi)頭的括號(hào)中
? 類(lèi)從其超類(lèi)中繼承屬性
? 實(shí)例會(huì)繼承所有可讀取類(lèi)的屬性
? 每次實(shí)例對(duì)象的屬性調(diào)用都會(huì)進(jìn)行類(lèi)樹(shù)搜索
? 邏輯的修改是通過(guò)創(chuàng)建子類(lèi),而不是修改超類(lèi)

#創(chuàng)建父類(lèi)---經(jīng)典類(lèi)
class a():
    a1="11"
#創(chuàng)建子類(lèi),繼承父類(lèi)a
class b(a):
    b1="22"
#調(diào)用父類(lèi)的屬性
print(b.a1)

以上的例子中父類(lèi)是經(jīng)典類(lèi),因?yàn)楦割?lèi)未繼承object類(lèi);繼承object類(lèi)的父類(lèi)是新式類(lèi)
在python3之后,所有類(lèi)默認(rèn)繼承object類(lèi),就是說(shuō)所有類(lèi)都是新式類(lèi)。

#創(chuàng)建父類(lèi)---新式類(lèi)
class a(object):
    a1="11"
#創(chuàng)建子類(lèi),繼承父類(lèi)a
class b(a):
    b1="22"
#調(diào)用父類(lèi)的屬性
print(b.a1)

在繼承中,父類(lèi)是經(jīng)典類(lèi)那么子類(lèi)就是經(jīng)典類(lèi);父類(lèi)是新式類(lèi),子類(lèi)就是新式類(lèi),Python3之后,所有類(lèi)都是新式類(lèi)

多繼承

python支持繼承多個(gè)類(lèi),那么在繼承父類(lèi)的屬性和方法時(shí)改怎么找呢?

class D(object):

    def display(self):
        print('D.display')

class C(D):

    def display(self):
        print('C.display')

class B(D):

    def display(self):
        print('B.display')

class A(B,C):

    def display(self):
        print('A.display')

a=A()
a.display()

多繼承中,子類(lèi)的對(duì)象調(diào)用一個(gè)方法,默認(rèn)是就近原則,在python2.7之前的經(jīng)典類(lèi)中是深度優(yōu)先,在python3之后的新式類(lèi)中是廣度優(yōu)先。
執(zhí)行display方法時(shí),查找順序?yàn)?A--B--C--D

Python之初識(shí)面向?qū)ο?></p><h3>Python3中繼承特性的新方法</h3><h4>mro()</h4><p>類(lèi)的函數(shù)mro()記錄了繼承的順序,mro()</p><pre><code>A.mro()
結(jié)果如下:
[<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.D'>, <class 'object'>]</code></pre><h4>super()</h4><p>super方法是python3之后版本才有的,用于新式類(lèi),super方法是根據(jù)調(diào)用者的節(jié)點(diǎn)位置的廣度優(yōu)先順序來(lái)調(diào)用父類(lèi)的函數(shù)或方法的。<br/>兩種調(diào)用方式<br/>1、父類(lèi)名.方法名,需要自己傳self參數(shù)<br/>2、super().方法名,不需要自己傳self</p><pre><code>class Person(object):
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def eat(self):
        print(

六、類(lèi)的多態(tài)

類(lèi)的多態(tài)性是指具有不同功能的函數(shù)可以使用相同的函數(shù)名,這樣就可以用一個(gè)函數(shù)名調(diào)用不同內(nèi)容的函數(shù)。

class Person():
def display(self):
    pass

class Man(Person):
    def display(self):
        print("man")

class Woman(Person):
    def display(self):
        print("woman")

def func(obj):
    obj.display()

#實(shí)例化對(duì)象
man1=Man()
woman1=Woman()

#多態(tài)
func(man1)
func(woman1)

七、組合

一個(gè)對(duì)象的屬性值是另外一個(gè)類(lèi)的對(duì)象

class Birthday():
    def __init__(self,year,month,day):
        self.year=year
        self.month=month
        self.day=day

class Person():
    def __init__(self,name,age,birthday):
        self.name=name
        self.age=age
        self.birthday=birthday

bd=Birthday(2019,11,11)

jonny=Person("jonny",20,bd)

#組合調(diào)用
print(jonny.birthday.year)

八、派生

父類(lèi)中沒(méi)有的屬性,在子類(lèi)中出現(xiàn),叫做派生屬性
父類(lèi)中沒(méi)有的方法,在子類(lèi)中出現(xiàn),叫做派生方法

class Person(object):
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def eat(self):
        print("eatfood")

class Teacher(Person):
    def __init__(self,name,age,sex,school,cls):
        Person.__init__(self,name,age,sex)

    #派生方法
    def score(self):
        print("teacherscore")
    def eat(self):
        print("teachereating")

t1=Teacher("adc",42,"man","127","python1ban")
print(t1.name)

#傳入類(lèi)和對(duì)象,調(diào)用父類(lèi)的方法
super(Teacher,t1).eat()

九、面向?qū)ο蟮木幊桃?guī)范:接口類(lèi)與抽象類(lèi)

接口類(lèi)與抽象類(lèi)的不同點(diǎn):
接口類(lèi):支持多繼承,接口類(lèi)中的所有的方法都必須不能實(shí)現(xiàn);python中沒(méi)有接口類(lèi),java沒(méi)有多繼承,所以為了接口隔離原則,設(shè)計(jì)了接口這個(gè)概念

抽象類(lèi):不支持多繼承,抽象類(lèi)中的方法可以有一些代碼的實(shí)現(xiàn);python自帶多繼承,所以直接用class來(lái)實(shí)現(xiàn)接口類(lèi);python支持抽象類(lèi),一般情況下單繼承,java本來(lái)就有單繼承,所以就有了抽象類(lèi)。
接口類(lèi)與抽象類(lèi)的相同點(diǎn):
1、都依賴(lài)abc模塊實(shí)現(xiàn)
2、都是面向?qū)ο蟮木幊桃?guī)范
3、接口類(lèi)和抽象類(lèi)都不能實(shí)例化

一般情況下,單繼承,能實(shí)現(xiàn)的功能是一樣的,所以在父類(lèi)中可以有簡(jiǎn)單的基礎(chǔ)實(shí)現(xiàn)
多繼承的情況下,由于功能比較復(fù)雜,所以不容易抽象出相同的功能的具體實(shí)現(xiàn)寫(xiě)在父類(lèi)中

接口類(lèi)的實(shí)現(xiàn):

from abc import abstractmethod,ABCMeta
class Payment(metaclass=ABCMeta):#元類(lèi),默認(rèn)的元類(lèi)type
    @abstractmethod
    def pay(self,money):pass
#raiseNotImplemented#手動(dòng)拋異常,沒(méi)有實(shí)現(xiàn)這個(gè)方法
#規(guī)范:接口類(lèi)或者抽象類(lèi)都可以
#接口類(lèi):支持多繼承,接口類(lèi)中的所有的方法都必須不能實(shí)現(xiàn)-----java
#抽象類(lèi):不支持多繼承,抽象類(lèi)中的方法可以有一些代碼的實(shí)現(xiàn)-----java

class Wechatpay():
    defpay(self,money):
    print("微信支付了%s元"%money)

class Alipay():
    defpay(self,money):
    print("ali支付了%s元"%money)

def pay(pay_obj,money):#統(tǒng)一支付接口
    pay_obj.pay(money)

wechat=Wechatpay()
ali=Alipay()

pay(ali,200)

接口類(lèi)多繼承示例:

from abc import ABCMeta,abstractmethod

class Swim_Animal(metaclass=ABCMeta):
    @abstractmethod
    def swim(self):
        pass

class Walk_Animal(metaclass=ABCMeta):
    @abstractmethod
    def walk(self):pass

class Fly_Animal(metaclass=ABCMeta):
    @abstractmethod
    def fly(self):pass

class Tiger(Walk_Animal,Swim_Animal):
    def swim(self):pass
    def walk(self):pass

class Swan(Walk_Animal,Swim_Animal,Fly_Animal):
    def swim(self):pass
    def walk(self):pass
    def fly(self):pass

class Oldying(Walk_Animal,Fly_Animal):
    def walk(self):pass
    def fly(self):pass

抽象類(lèi)示例:

from abc import abstractmethod,ABCMeta

class All_file(metaclass=ABCMeta):
    @abstractmethod
    def read(self):#規(guī)范子類(lèi)必須有的方法
        print("du")

    @abstractmethod
    def write(self):
        print("xie")

class Doc(All_file):
    def read(self):pass
    def write(self):pass

classTxt(All_file):
    def read(self):pass
    def write(self):pass

class Ppt(All_file):
    def read(self):print("pptdu")
    def write(self):pass

p1=Ppt()
p1.read()

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站欄目:Python之初識(shí)面向?qū)ο?創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://www.chinadenli.net/article2/dspoic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司微信小程序網(wǎng)站設(shè)計(jì)品牌網(wǎng)站建設(shè)軟件開(kāi)發(fā)企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名