欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python面向?qū)ο缶幊袒A(chǔ)解析(一)

 更新時(shí)間:2017年10月26日 09:37:21   作者:張璨  
這篇文章主要介紹了Python面向?qū)ο缶幊袒A(chǔ)解析的相關(guān)內(nèi)容,如果您想對(duì)Python編程的基礎(chǔ)部分有所了解,這篇文章是值得一看的,需要的朋友可以參考下。

1.什么是面向?qū)ο?/strong>

面向?qū)ο螅╫op)是一種抽象的方法來(lái)理解這個(gè)世界,世間萬(wàn)物都可以抽象成一個(gè)對(duì)象,一切事物都是由對(duì)象構(gòu)成的。應(yīng)用在編程中,是一種開(kāi)發(fā)程序的方法,它將對(duì)象作為程序的基本單元。

2.面向?qū)ο笈c面向過(guò)程的區(qū)別

我們之前已經(jīng)介紹過(guò)面向過(guò)程了,面向過(guò)程的核心在‘過(guò)程'二字,過(guò)程就是解決問(wèn)題的步驟,面向過(guò)程的方法設(shè)計(jì)程序就像是在設(shè)計(jì)一條流水線,是一種機(jī)械式的思維方式

  優(yōu)點(diǎn):復(fù)雜的問(wèn)題簡(jiǎn)單化,流程化
  缺點(diǎn):擴(kuò)展性差

  主要應(yīng)用場(chǎng)景有:Linux內(nèi)核,git,以及http服務(wù)

面向?qū)ο蟮某绦蛟O(shè)計(jì),核心是對(duì)象,對(duì)象就是特征(變量)與技能(函數(shù))的結(jié)合體。

  優(yōu)點(diǎn):解決了程序擴(kuò)展性差的問(wèn)題
  缺點(diǎn):可控性差,無(wú)法預(yù)測(cè)最終結(jié)果

  主要應(yīng)用場(chǎng)景是需求經(jīng)常變化的軟件,即與用戶交互比較頻繁的軟件

需要注意的是:面向?qū)ο蟮某绦蛟O(shè)計(jì)并不能解決全部問(wèn)題,只是用來(lái)解決擴(kuò)展性。當(dāng)然,現(xiàn)在的的互聯(lián)網(wǎng)軟件,擴(kuò)展性是最重要的

3.對(duì)象與類(lèi)的概念

在python中,一切皆對(duì)象,一個(gè)對(duì)象應(yīng)該具有自己的屬性,也就是特征,還有有自己的功能,即方法

在Python中,特征用變量表示,功能用函數(shù)表示,所以對(duì)象就是變量與函數(shù)的結(jié)合體

而從各種各樣的對(duì)象中抽取出來(lái)具有相同特征和相同功能組成的,就是類(lèi),所以說(shuō)類(lèi)是一系列對(duì)象共同特征與功能的結(jié)合體
下面讓我們來(lái)定義一個(gè)類(lèi),方法與定義一個(gè)函數(shù)有些類(lèi)似:

#定義一個(gè)中國(guó)人的類(lèi)
class Chinese:
 #共同的特征
 country='China'
 
 #共同的技能
 def talk(self):
 print('is talking Chinese')
 def eat(self):
 print('is eating Chinese food')

這樣我們就定義好了一個(gè)類(lèi),注意:

1.定義類(lèi)用class關(guān)鍵字
2.類(lèi)名一般首字母大寫(xiě),且冒號(hào)前面不需要括號(hào)(非必須,有括號(hào)也不報(bào)錯(cuò),一般需要繼承object類(lèi)來(lái)保證是新式類(lèi)),區(qū)別于函數(shù)定義
3.與函數(shù)不同,類(lèi)在定義階段就會(huì)執(zhí)行類(lèi)里面的代碼
4.類(lèi)有兩種屬性,共同的特征叫數(shù)據(jù)屬性,共同的功能叫函數(shù)屬性

怎樣由這個(gè)類(lèi)產(chǎn)生一個(gè)對(duì)象呢?實(shí)例化:

#實(shí)例化的方式產(chǎn)生一個(gè)對(duì)象
p1=Chinese()
p2=Chinese()

我們可以得出結(jié)論了,不管現(xiàn)實(shí)世界中怎么樣,但是在程序中,確實(shí)是先有類(lèi),才有的對(duì)象

我們已經(jīng)通過(guò)實(shí)例化的方式得到兩個(gè)對(duì)象了,但是有一個(gè)問(wèn)題,得到的兩個(gè)對(duì)象,特征和功能都是一樣的,這根萬(wàn)物皆對(duì)象的理念完全不符啊,應(yīng)該是每個(gè)對(duì)象都是不同的,這樣的世界才有意思啊

事實(shí)上,我們?cè)诙x類(lèi)的時(shí)候,忘記了定義 __init__() 這個(gè)函數(shù),正確的定義方法應(yīng)該是這樣的:

#定義一個(gè)中國(guó)人的類(lèi)
class Chinese:
 #共同的特征
 country='China'
 #初始化
 def __init__(self,name,age):
 self.name=name #每個(gè)對(duì)象都有自己的名字
 self.age=age #每個(gè)對(duì)象都有自己的年齡
 #共同的技能
 def talk(self):
 print('is talking Chinese')
 def eat(self):
 print('is eating Chinese food')
#實(shí)例化的方式產(chǎn)生一個(gè)對(duì)象
p1=Chinese('zhang',18)

類(lèi)名加括號(hào)就是實(shí)例化,實(shí)例化就會(huì)自動(dòng)觸發(fā)__init__ 函數(shù)運(yùn)行,可以用它來(lái)為每個(gè)對(duì)象定制自己的特征

我們?cè)诙x__init__函數(shù)的時(shí)候,括號(hào)里有三個(gè)參數(shù),但是我們實(shí)例化調(diào)用的時(shí)候卻只傳了兩個(gè)值,為什么不報(bào)錯(cuò)呢?這是因?yàn)閟elf的作用就是:實(shí)例化的時(shí)候,自動(dòng)將對(duì)象本身傳給__init__函數(shù)的第一個(gè)參數(shù),當(dāng)然self只是個(gè)名字了。

注意:這種自動(dòng)傳值的機(jī)制只是在實(shí)例化的時(shí)候才會(huì)體現(xiàn),類(lèi)除了實(shí)例化還有一種作用就是屬性引用,方法是類(lèi)名.屬性

從上面報(bào)錯(cuò)的代碼可以看出,屬性引用的時(shí)候,沒(méi)有自動(dòng)傳值這回事,如果是類(lèi)調(diào)用類(lèi)里面的方法,需要手動(dòng)把類(lèi)當(dāng)作參數(shù)傳給它

Chinese.talk(Chinese)

我們學(xué)過(guò)名稱空間的概念,定義一個(gè)變量,或者定義一個(gè)函數(shù)都會(huì)在內(nèi)存中開(kāi)辟一塊內(nèi)存空間,類(lèi)里面也有定義變量(數(shù)據(jù)屬性),定義函數(shù)(函數(shù)屬性),他們也有名稱空間,可以通過(guò).__dict__的方法查看

p1=Chinese('zhang',18)
print(Chinese.__dict__)
#{'__module__': '__main__', 'country': 'China', '__init__': <function Chinese.__
# init__ at 0x000002187F35D158>, 'talk': <function Chinese.talk at 0x000002187F35D1E0>, 
# 'eat': <function Chinese.eat at 0x000002187F35D268>, '__
# dict__': <attribute '__dict__' of 'Chinese' objects>,
# '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}
print(p1.__dict__)
#{'name': 'zhang', 'age': 18}

通過(guò)上面代碼顯示的結(jié)果我們知道了,打印實(shí)例化后的對(duì)象的名稱空間,只顯示自己特有的屬性,如果想要找到和其他對(duì)象共有的屬性,就要去類(lèi)的名稱空間里面去找

還有一個(gè)問(wèn)題,對(duì)象的名稱空間中沒(méi)有函數(shù)屬性,當(dāng)然也是去類(lèi)里面找,但是不同對(duì)象指定的函數(shù),是一個(gè)函數(shù)嗎

p1=Chinese('zhang',18)
p2=Chinese('li',19)
print(Chinese.talk)#<function Chinese.talk at 0x000001B8A5B7D1E0>
print(p1.talk) #<bound method Chinese.talk of <__main__.Chinese object at 0x000001B8A5B7BD68>>
print(p2.talk) #<bound method Chinese.talk of <__main__.Chinese object at 0x000001B8A5B7BDA0>>

可以看到,并不是,他們的內(nèi)存地址都不一樣。而且注意bound method,是綁定方法

對(duì)象本身只有數(shù)據(jù)屬性,但是Python的class機(jī)制將類(lèi)的函數(shù)也綁定到對(duì)象上,稱為對(duì)象的方法,或者叫綁定方法。綁定方法唯一綁定一個(gè)對(duì)象,同一個(gè)類(lèi)的方法綁定到不同的對(duì)象上,屬于不同的方法。我們可以驗(yàn)證一下:

當(dāng)用到這個(gè)函數(shù)時(shí):類(lèi)調(diào)用的是函數(shù)屬性,既然是函數(shù),就是函數(shù)名加括號(hào),有參數(shù)傳參數(shù)

而對(duì)象用到這個(gè)函數(shù)時(shí),對(duì)象沒(méi)有函數(shù)屬性,他是綁定方法,綁定方法怎么用呢,也是直接加括號(hào),但不同的是,綁定方法會(huì)默認(rèn)把對(duì)象自己作為第一個(gè)參數(shù)

class Chinese:
 country='China'
 def __init__(self,name,age):
 self.name=name 
 self.age=age 
 def talk(self):
 print('%s is talking Chinese'%self.name)
 def eat(self):
 print('is eating Chinese food')

p1=Chinese('zhang',18)
p2=Chinese('li',19)
Chinese.talk(p1) #zhang is talking Chinese
p1.talk()  #zhang is talking Chinese

只要是綁定方法,就會(huì)自動(dòng)傳值!其實(shí)我們以前就接觸過(guò)這個(gè),在python3中,類(lèi)型就是類(lèi)。數(shù)據(jù)類(lèi)型如list,tuple,set,dict這些,實(shí)際上也都是類(lèi),我們以前用的方法如l1.append(3),還可以這樣寫(xiě):l1.append(l1,3)

繼承與派生

我們已經(jīng)說(shuō)過(guò),Python中一切皆對(duì)象。我們從對(duì)象中抽取了共同特征和技能,得到了類(lèi)的概念。類(lèi)與類(lèi)之間也有共同特征,我們可以從有共同特征和技能的類(lèi)中提取共同的技能和特征,叫做父類(lèi)。

比如老師和學(xué)生,都有名字,年紀(jì),生日,性別等等,都會(huì)走,說(shuō)話,吃飯。。。我們就可以從老師和學(xué)生中總結(jié)出來(lái)一個(gè)‘人'類(lèi),稱為父類(lèi),那老師和學(xué)生就是‘人'類(lèi)的子類(lèi),子類(lèi)繼承父類(lèi),就有了父類(lèi)的特征和方法。

繼承是一種什么‘是'什么的關(guān)系,繼承是一種產(chǎn)生新類(lèi)的方法,當(dāng)然目的也是為了減少代碼重用。

繼承的基本形式是:

class People:
 pass
class Student(People):#People稱為基類(lèi)或者父類(lèi)
 pass

1.在Python中支持多繼承,一個(gè)子類(lèi)可以繼承多個(gè)父類(lèi)

我們可以通過(guò)__bases__的方法查看繼承的所有父類(lèi),會(huì)返回一個(gè)元組?!?/p>

class People:
 pass
class Animals:
 pass
class Student(People,Animals):
 pass

print(Student.__bases__)#(<class '__main__.People'>, <class '__main__.Animals'>)
print(People.__bases__)#(<class 'object'>,)

可以看到,在People父類(lèi)中,默認(rèn)也繼承了一個(gè)object類(lèi),這就是新式類(lèi)和經(jīng)典類(lèi)的區(qū)別:

凡是繼承了object類(lèi)的類(lèi)及其子類(lèi),都稱為新式類(lèi),沒(méi)有繼承object類(lèi)的類(lèi),稱為經(jīng)典類(lèi)。

在Python 3中,默認(rèn)就是新式類(lèi),而在Python2.X中,默認(rèn)都是是經(jīng)典類(lèi)

繼承怎么減少代碼呢?看例子

class People:
 def __init__(self,name,age):
 self.name=name
 self.age=age
 def walk(self):
 print('%s is walkig'%self.name)
class Teacher(People):
 def __init__(self,name,age,level):
 People.__init__(self,name,age)
 self.level=level
t1=Teacher('zhang',18,10)
print(t1.level) #10
print(t1.name) #zhang  子類(lèi)可以用父類(lèi)定義的屬性
t1.walk() #zhang is walking 子類(lèi)無(wú)需定義就可以用父類(lèi)的方法
print(issubclass(Teacher,People)) #True查看Teacher類(lèi)是不是People類(lèi)的子類(lèi)

從上面的例子中可以看到,Teacher類(lèi)繼承了父類(lèi)People類(lèi),但是Teacher又有自己特有的屬性level,子類(lèi)也可以定義自己獨(dú)有的方法,甚至可以和父類(lèi)的方法重名,但是執(zhí)行時(shí)會(huì)以子類(lèi)定義的為準(zhǔn)。

這就叫做派生

2.組合

繼承是解決什么‘是'什么的問(wèn)題,那還有一種場(chǎng)景就是什么有什么,比如老師有生日,學(xué)生也有生日,生日有年月日這些屬性,如果每個(gè)類(lèi)都寫(xiě)的話,又是重復(fù)代碼。但是又不能讓學(xué)生和老師繼承生日類(lèi)。這時(shí)就用到了組合。組合就是解決什么‘有'什么的問(wèn)題??蠢?/p>

class Date:
 def __init__(self,year,mon,day):
 self.year=year
 self.mon=mon
 self.day=day
 def tell_birth(self):
 print('出生于%s年%s月%s日'%(self.year,self.mon,self.day))

class Teacher:
 def __init__(self,name,age,year,mon,day):
 self.name=name
 self.age=age
 self.birth=Date(year,mon,day)
t=Teacher('egon',19,2010,10,10)
print(t.birth)  #<__main__.Date object at 0x0000017E559380F0>
t.birth.tell_birth() #出生于2010年10月10日

什么?嫌參數(shù)太多?*args學(xué)過(guò)吧,你高興就好

class Date:
 def __init__(self,year,mon,day):
 self.year=year
 self.mon=mon
 self.day=day
 def tell_birth(self):
 print('出生于%s年%s月%s日'%(self.year,self.mon,self.day))
class Teacher:
 def __init__(self,name,age,*args):
 self.name=name
 self.age=age
 self.birth=Date(*args)
t=Teacher('egon',19,2010,10,10)
print(t.birth)  #<__main__.Date object at 0x0000017E559380F0>
t.birth.tell_birth() #出生于2010年10月10日

3.抽象類(lèi)與接口

繼承有兩種用途:

1.代碼重用,子類(lèi)繼承父類(lèi)的方法
2.聲明某個(gè)子類(lèi)兼容于某父類(lèi),定義一個(gè)接口類(lèi)Interface,接口類(lèi)中定義了一些接口名(就是函數(shù)名)且并未實(shí)現(xiàn)接口的功能,子類(lèi)繼承接口類(lèi),并且實(shí)現(xiàn)接口中的功能

需要注意的是,Python中并沒(méi)有接口的關(guān)鍵字,我們只能是模仿接口的功能

比如在 Python中,一切皆文件嘛,那程序是文件,硬件是文件,文本文檔也是文件,我們知道什么叫文件呢,就是能讀能寫(xiě),那程序,文本文檔這些,都應(yīng)該有讀和寫(xiě)的功能,我們來(lái)模擬一下

class Interface:
 def read(self):
 pass
 def write(self):
 pass
class Txt(Interface):
 def read(self):
 print('文本文檔的讀取方式')
 def write(self):
 print('文本文檔的寫(xiě)入方式')
class Sata(Interface):
 def read(self):
 print('硬盤(pán)文件的讀取方式')
 def write(self):
 print('硬盤(pán)文件的寫(xiě)入方式')
class process(Interface):
 def read(self):
 print('進(jìn)程數(shù)據(jù)的讀取方式')
 def write(self):
 print('進(jìn)程數(shù)據(jù)的寫(xiě)入方式')

這么做的意義就是:我們不需要知道子類(lèi)有什么具體的方法,既然他們繼承了文件類(lèi),那他們就是文件,那他們就有讀和寫(xiě)這兩個(gè)功能

父類(lèi)限制了子類(lèi)子類(lèi)必須有read和write這兩個(gè)方法,而且名字也必須一樣(當(dāng)然現(xiàn)在只是我們主觀上的限制,一會(huì)我們說(shuō)完抽象類(lèi),就可以從代碼級(jí)別上限制了),這樣就實(shí)現(xiàn)了統(tǒng)一,模擬了接口的概念,這就是歸一化設(shè)計(jì)。在歸一化設(shè)計(jì)中,只要是基于一個(gè)接口設(shè)計(jì)的類(lèi),那么所有的這些類(lèi)實(shí)例化出來(lái)的對(duì)象,在用法上是一樣的

我們?cè)賮?lái)說(shuō)一下抽象類(lèi):

Python中的抽象類(lèi)需要導(dǎo)入一個(gè)模塊來(lái)實(shí)現(xiàn)。抽象類(lèi)只能被繼承,不能被實(shí)現(xiàn)

抽象類(lèi)的寫(xiě)法:

import abc
class File(metaclass=abc.ABCMeta):
 @abc.abstractmethod
 def read(self):
 pass
 @abc.abstractmethod
 def write(self):
 pass
#父類(lèi)使用了抽象類(lèi),那子類(lèi)就必須繼承父類(lèi)的方法,而且名字也必須一樣
#這樣就實(shí)現(xiàn)了代碼級(jí)別的限制

class Txt(File):
 def read(self):
 print('文本文檔的讀取方式')
 def write(self):
 print('文本文檔的寫(xiě)入方式')

繼承原理:

當(dāng)我們定義一個(gè)類(lèi)后,Python就會(huì)根據(jù)上面的繼承規(guī)律解析出一個(gè)繼承順序的列表(MRO列表),可以通過(guò)mro()查看,但是這個(gè)方法只有在新式類(lèi)中才有,經(jīng)典類(lèi)沒(méi)有

super()方法

我們之前用繼承是怎么用的來(lái)著,

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

class Child(Parent):
 def __init__(self,name,age,salary):
 Parent.__init__(self,name,age,salary)
 self.salary=salary

這其實(shí)是和繼承沒(méi)啥關(guān)系的寫(xiě)法,如果父類(lèi)名字改了,在子類(lèi)中也要改,更優(yōu)雅的寫(xiě)法是用super()

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

class Child(Parent):
 def __init__(self,name,age,salary):
 super().__init__(name,age)
 self.salary=salary

這是python3中的寫(xiě)法,如果是python2,super后面的括號(hào)里要寫(xiě)(Child,self)

注意:super()方法只適用于新式類(lèi)

如果是多繼承的關(guān)系,就用到mro列表,如果就是要繼承多個(gè)父類(lèi)的方法,那就還是乖乖的用以前指名道姓的方法引用

看完這篇,可以繼續(xù)參閱:

Python面向?qū)ο缶幊袒A(chǔ)解析(二)

總結(jié)

以上就是本文關(guān)于Python面向?qū)ο缶幊袒A(chǔ)解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python探索之ModelForm代碼詳解、Python_LDA實(shí)現(xiàn)方法詳解等,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • python sklearn中tsne算法降維結(jié)果不一致問(wèn)題的解決方法

    python sklearn中tsne算法降維結(jié)果不一致問(wèn)題的解決方法

    最近在做一個(gè)文本聚類(lèi)的分析,在對(duì)文本數(shù)據(jù)embedding后,想著看下數(shù)據(jù)的分布,于是用sklearn的TSNE算法來(lái)降維embedding后的數(shù)據(jù)結(jié)果,當(dāng)在多次執(zhí)行后,竟發(fā)現(xiàn)TSNE的結(jié)果竟然變了,而且每次都不一樣,所以本文就給大家講講如何解決sklearn中tsne算法降維結(jié)果不一致的問(wèn)題
    2023-10-10
  • 關(guān)于Python參數(shù)解析器argparse的應(yīng)用場(chǎng)景

    關(guān)于Python參數(shù)解析器argparse的應(yīng)用場(chǎng)景

    這篇文章主要介紹了關(guān)于Python參數(shù)解析器argparse的應(yīng)用場(chǎng)景,argparse 模塊使編寫(xiě)用戶友好的命令行界面變得容易,程序定義了所需的參數(shù),而 argparse 將找出如何從 sys.argv 中解析這些參數(shù),需要的朋友可以參考下
    2023-08-08
  • Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問(wèn)題

    Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Python中根據(jù)時(shí)間自動(dòng)創(chuàng)建文件夾的代碼實(shí)現(xiàn)

    Python中根據(jù)時(shí)間自動(dòng)創(chuàng)建文件夾的代碼實(shí)現(xiàn)

    這篇文章主要介紹了Python中根據(jù)時(shí)間自動(dòng)創(chuàng)建文件夾的代碼實(shí)現(xiàn),這樣的話給工作帶來(lái)極大的便利,方便桌面文件按時(shí)間存放,具體實(shí)例代碼跟隨小編一起看看吧
    2021-10-10
  • Python獲取網(wǎng)絡(luò)時(shí)間戳的兩種方法詳解

    Python獲取網(wǎng)絡(luò)時(shí)間戳的兩種方法詳解

    在我們進(jìn)行注冊(cè)碼的有效期驗(yàn)證時(shí),通常使用獲取網(wǎng)絡(luò)時(shí)間的方式來(lái)進(jìn)行比對(duì)。本文將介紹兩種利用Python獲取網(wǎng)絡(luò)時(shí)間戳的方法,感興趣的可以了解一下
    2022-01-01
  • tensorflow將圖片保存為tfrecord和tfrecord的讀取方式

    tensorflow將圖片保存為tfrecord和tfrecord的讀取方式

    今天小編就為大家分享一篇tensorflow將圖片保存為tfrecord和tfrecord的讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 在python的類(lèi)中動(dòng)態(tài)添加屬性與生成對(duì)象

    在python的類(lèi)中動(dòng)態(tài)添加屬性與生成對(duì)象

    這篇文章給大家介紹了如何在python的類(lèi)中動(dòng)態(tài)添加屬性和生成對(duì)象,文中通過(guò)幾個(gè)方面來(lái)進(jìn)行介紹,對(duì)這感興趣的朋友們可以學(xué)習(xí)學(xué)習(xí)。
    2016-09-09
  • Python中的文件輸入輸出問(wèn)題

    Python中的文件輸入輸出問(wèn)題

    這篇文章主要介紹了Python中的文件輸入輸出問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python實(shí)現(xiàn)的爬取豆瓣電影信息功能案例

    Python實(shí)現(xiàn)的爬取豆瓣電影信息功能案例

    這篇文章主要介紹了Python實(shí)現(xiàn)的爬取豆瓣電影信息功能,結(jié)合具體實(shí)例形式分析了Python基于requests庫(kù)的爬蟲(chóng)使用技巧,需要的朋友可以參考下
    2019-09-09
  • Django查詢優(yōu)化及ajax編碼格式原理解析

    Django查詢優(yōu)化及ajax編碼格式原理解析

    這篇文章主要介紹了Django查詢優(yōu)化及ajax編碼格式原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論