類模塊補充材料_第1頁
類模塊補充材料_第2頁
類模塊補充材料_第3頁
類模塊補充材料_第4頁
類模塊補充材料_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

python類和模塊楊志峰環(huán)境:Anacondapython3.6開發(fā)工具:pycharm類一、數(shù)據(jù)類型二、層次結(jié)構(gòu)三、設(shè)計模式四、模塊一、數(shù)據(jù)類型內(nèi)置數(shù)據(jù)類型類型名實例(instance)方法(method)整型inta=1ora=int(1)四則運算等浮點型floatb=0.5orb=float(0.5)四則運算等字符串型strc=‘Hello’orc=str(‘Hello’)字符串截取等列表listd=[]ord=list()添加、刪除元素等字典dicte={}ore=dict()添加、刪除元素等一、數(shù)據(jù)類型例1,list這個類型。(data_type.py)創(chuàng)建一個list實例,data=[1,2,3]。加入一個元素,data.append(1)。刪除這個實例,deldata或者程序運行結(jié)束時自動銷毀這個實例。del用在想節(jié)省內(nèi)存的時候。

‘.’運算符的用法:①.前面是一個實例(或類型),后面是屬于這個類型的方法。②.訪問模塊中的包。一、數(shù)據(jù)類型對于一個數(shù)據(jù)類型知道的不知道的1.類型名2.怎樣創(chuàng)建和刪除一個實例3.與這個數(shù)據(jù)類型有關(guān)的方法1.類型中,數(shù)據(jù)的內(nèi)部表示2.屬于類的方法的具體細節(jié)一、數(shù)據(jù)類型體現(xiàn)了封裝的思想,數(shù)據(jù)類型給外界暴露方法,隱藏內(nèi)部細節(jié)。對于特定問題,內(nèi)置數(shù)據(jù)類型可能不夠用或者用起來很麻煩。我們可以自定義數(shù)據(jù)類型,將數(shù)據(jù)和作用于它們上的方法綁定在一起,構(gòu)造一個新數(shù)據(jù)類型。一、數(shù)據(jù)類型

一、數(shù)據(jù)類型1classCoordinate(object):2"""3

二維平面坐標類。45可以求坐標距離,比較坐標大小。6

"""class用來定義類的關(guān)鍵字Coordinate是類名,類名以大寫字母開頭括號內(nèi)的object表示該類繼承object類:表示類的定義結(jié)束“”“…”“”表示注釋,寫類的內(nèi)部數(shù)據(jù),行為等空四個空格,表示下面是類的內(nèi)容一、數(shù)據(jù)類型綁定數(shù)據(jù)1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None__init__()是個特殊方法,用來定義怎樣創(chuàng)建類的實例。所有類都必須實現(xiàn)或者繼承這個方法。注意是雙下劃線。一般稱為構(gòu)造函數(shù)。用一些高級技巧可以繞過__init__()來創(chuàng)建對象,詳見pythoncookbook一、數(shù)據(jù)類型綁定數(shù)據(jù)1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None第一個參數(shù)self指這個類的一個實例。表示這個方法屬于這個類的一個實例。一、數(shù)據(jù)類型綁定數(shù)據(jù)1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None第一個參數(shù)后面的參數(shù),這里是x和y,可以將它們綁定在內(nèi)部數(shù)據(jù)上。形如(self.*)的數(shù)據(jù)稱為實例變量,屬于實例。一、數(shù)據(jù)類型綁定數(shù)據(jù)1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None所有的實例變量都應(yīng)在構(gòu)造函數(shù)內(nèi)賦值(初始化)。前兩句綁定傳入的數(shù)據(jù)。由于沒有傳入與name有關(guān)的數(shù)據(jù),將name賦值為None。一、數(shù)據(jù)類型創(chuàng)建實例1classCoordinate(object):2def__init__(self,x,y):

3

self.x=x

4

self.y=y

5

self.name=None67data1=Coordinate(1,2)

8data2=Coordinate(-1,-1)用類名(不包含self的其他參數(shù))創(chuàng)建實例。一、數(shù)據(jù)類型直接訪問和修改內(nèi)部數(shù)據(jù)1data1=Coordinate(1,2)

2data2=Coordinate(-1,-1)3

4print(data1.x)

#訪問數(shù)據(jù)5data1.x=10#修改數(shù)據(jù)’.’運算符訪問實例中的實例變量。按照規(guī)范,避免用’.’運算符直接訪問和修改數(shù)據(jù)。為了簡單,可不遵守這個規(guī)范。動態(tài)綁定一個實例變量1data1.z=3

為了靈活性,python支持這種做法,很少用到。會造成data1和data2中實例變量不同。一、數(shù)據(jù)類型間接訪問和修改內(nèi)部數(shù)據(jù)1classCoordinate(object):

2defget_x(self):

3

returnself.x4defset_x(self,x):

5

self.x=x67data1.get_x()#訪問數(shù)據(jù)

Coordinate.get_x(data1)#另一種方式8data1.set_x(10)#修改數(shù)據(jù)Coordinate.set_y(data1,10)#另一種方式引入getter和setter方法。getter用于訪問數(shù)據(jù),setter用于修改數(shù)據(jù)。一、數(shù)據(jù)類型變量名前面加兩個下劃線,希望不被外界訪問。如果加一個下劃線,建議輕易不被外界訪問。對于方法來說也一樣。隱藏內(nèi)部數(shù)據(jù)表示,實現(xiàn)訪問控制。隱藏內(nèi)部表示1classCoordinate(object):2def__init__(self,x,y):

3

self.__x=x

4

self._y=y

5

self.name=None67data1=Coordinate(1,2)

8data2=Coordinate(-1,-1)9print(data1.__x)

!出錯10print(data1._Coordinate__x)#正確11print(data1._y)#正確python自動給加雙下劃線的變量或函數(shù),前面補上_類名一、數(shù)據(jù)類型計算兩個坐標的歐式距離1classCoordinate(object):2

defdistance(self,other):

3

x_diff_sq=(self.x-other.x)**2

4

y_diff_sq=(self.y-other.y)**2

5

return(x_diff_sq+y_diff_sq)**0.567data1=Coordinate(1,2)

8data2=Coordinate(-1,-1)910length=data1.distance(data2)length=Coordinate.distance(data1,data2)#另一種方式

11print(length)傳入另一個Coordinate實例,計算兩個坐標的歐式距離兩個坐標相加整型這樣的基本數(shù)據(jù)類型可用’+’,但在坐標類上’+’沒有定義,需要自定義坐標類上的’+’運算。用重載(overload)擴展’+’的支持的參數(shù)類型,使它支持坐標類型相加。運算符/操作內(nèi)置函數(shù)重載后運算+__add__(self,other)self+other-__sub__(self,other)self-other==__eq__(self,other)self==other<__lt__(self,other)self<otherlen()__len__(self)len(self)print()__str__(self)print(self)迭代操作__iter__(self)或__getitem__(self,item)foreinlist:一、數(shù)據(jù)類型兩個坐標相加1classCoordinate(object):2def__add__(self,other):

3

new_x=self.x+other.x

4

new_y=self.y+other.y

5

returnCoordinate(new_x,new_y)67data1=Coordinate(1,2)

8data2=Coordinate(-1,-1)9data3=data1+data2#即(0,1)data3=Coordinate.__add__(data1,data2)#另一種方式由于重載了’+’運算符,可以直接加兩個坐標實例。執(zhí)行’+’操作時,判斷前面那個變量是Coordinate類的實例,因此調(diào)用Coordinate類的__add__(self,other)方法。一、數(shù)據(jù)類型輸出實例1classCoordinate(object):2def__str__(self):

3

return'('+str(self.x)+','+str(self.y)+')'45data1=Coordinate(1,2)6print(data1)#輸出(1,2)print(Coordinate.__str__(data3))#另一種方式由于重寫了類的字符串化函數(shù),print()發(fā)現(xiàn)參數(shù)是Coordinate實例,調(diào)用Coordinate類中的__str__(self)方法。一、數(shù)據(jù)類型特殊的數(shù)據(jù)—類變量1classCoordinate(object):2

record=13def__init__(self,x,y):

4

self.x=x

5

self.y=y

6

self.name=None

7

self.id=Coordinate.record

8

Coordinate.record+=1910data1=Coordinate(1,2)

11Coordinate.record=212data1.record=313print(Coordinate.record)#輸出2動態(tài)綁定實例變量,不影響類變量。類變量是所有實例共享的變量,是公共的數(shù)據(jù)。一、數(shù)據(jù)類型特殊的數(shù)據(jù)—類變量1classCoordinate(object):2

record=13def__init__(self,x,y):

4

self.x=x

5

self.y=y

6

self.name=None

7

self.id=Coordinate.record

8

Coordinate.record+=1910data1=Coordinate(1,2)

11data2=Coordinate(-1,-1)

12print(data1.id)#輸出1

13print(data2.id)#輸出2用來計數(shù),每創(chuàng)建一個實例,類變量加1。一、數(shù)據(jù)類型特殊的數(shù)據(jù)—類變量1classCoordinate(object):2

record=13def__init__(self,x,y):

4

self.x=x

5

self.y=y

6

self.name=None

7

self.id=Coordinate.record

8

Coordinate.record+=1910Coordinate.new_var=1

動態(tài)綁定類變量,很少用到。一、數(shù)據(jù)類型實例變量類變量①.在__init__()中定義②.每個實例特有③.只有它所屬的實例可以訪問、修改它④.在類內(nèi)部,用self.變量名訪問、修改它。在類外部,用實例名.變量名訪問、修改它①.在類中定義,不在方法中定義②.屬于類,類的所有實例所共有③.任何實例都可以訪問、修改它④.無論在類的內(nèi)部還是外部,建議用類名.變量名訪問、修改它實例變量和類變量的比較類方法1

@classmethod

2

defcreate(cls,*args):

3

iflen(args)==2:

4

returncls(args[0],args[1])

5

iflen(args)==1:

6result=re.findall('\d+',args[0])

7

iflen(result)==2:

8

returncls(int(result[0]),int(result[1]))

9

else:

10

print('坐標格式錯誤')1112data4=Coordinate.create(3,4)#創(chuàng)建一個(3,4)坐標實例

13

data5=Coordinate.create('4,5')#創(chuàng)建一個(4,5)坐標實例

14

data6=Coordinate.create('5/6')

#創(chuàng)建一個(5,6)坐標實例@classmethod是個裝飾器,表示下面是一個類方法。第一個參數(shù)cls指這個類。表示這個方法屬于這個類??梢詳U展__init__函數(shù)支持的參數(shù)。裝飾器一般用函數(shù)式編程得到,思路是一個函數(shù)的參數(shù)是另一個函數(shù),很少用到。靜態(tài)方法1importcsv

2importos

3

4classSomeOper:

5

@staticmethod

6

defread_file(filename):

7

ifos.path.exists(filename):

8content=[]

9file=open(filename,encoding=‘utf-8’)

10csv_reader=csv.reader(file)

11

forrowincsv_reader:

12[content.append(int(x))forxinrow]

13

returncontent

14SomeOper.read_file(‘test.csv’)#得到csv文件的list實例參數(shù)和類、實例都沒有關(guān)系。在普通函數(shù)前面有個類名,用類組織普通函數(shù)。一、數(shù)據(jù)類型當任務(wù)很復雜時,可以拆分為幾個簡單的任務(wù),每個簡單任務(wù)對應(yīng)一個類,這時需要用多個類。分成了多個類,團隊合作的時候,可以每個人負責一個類,最后把它們組合起來。在一個類中放入另一個類,構(gòu)成類的組合。有兩種常用的方法:①.構(gòu)造注入②.設(shè)值注入一、數(shù)據(jù)類型例3:有一個內(nèi)容是一些整數(shù)的csv文件,需要把文件中的所有數(shù)加起來。定義一個文件操作類FileOperator,用來讀csv文件。另一個管理類Manager,用來求和,把文件操作類放入管理類。(csv_sum.py)一、數(shù)據(jù)類型①.構(gòu)造注入,構(gòu)造時放入另一類的實例。1classManager:2def__init__(self,file_operator):

3

self.file_operator=file_operator1classFileOperator:…1fileOp=FileOperator()#創(chuàng)建一個FileOperator類的實例

2manager=Manager(fileOp)#創(chuàng)建一個Manager類的實例

3sum=pute('test.csv')#傳入csv文件名

4print(sum)#輸出計算結(jié)果一、數(shù)據(jù)類型②.設(shè)值注入,用setter函數(shù)放入另一類的實例。1classManager:

2

def__init__(self):

3

self.file_operator=None

4

5defset_file_operator(self,file_operator):

6

self.file_operator=file_operator1classFileOperator:…1fileOp=FileOperator()#創(chuàng)建一個FileOperator類的實例

2manager=Manager()#創(chuàng)建一個Manager類的實例

3manager.set_file_operator(fileOp)#通過setter函數(shù)注入實例

4sum=pute('test.csv')#傳入csv文件名

5print(sum)#輸出計算結(jié)果一、數(shù)據(jù)類型組合的好處1defcompute(self,filename):

1content=self.file_operator.read_csv(filename)

1sum_content=0

1

fornumincontent:

1sum_content+=num

1

returnsum_content1sum=pute('test.csv')#傳入csv文件名二、層次結(jié)構(gòu)例4:一些生命體的行為,貓、狗、學生和工人。(life.py)具體的行為和數(shù)據(jù)見下頁。LifeCatDogPersonStudentWorker更加抽象對于一個類,向上找,在樹的路徑上的統(tǒng)稱為父類,習慣上父類指上一層與它直接相連的那個類;向下找,在樹的路徑上的統(tǒng)稱為子類,習慣上子類指下一層與它直接相連的那個類。共同數(shù)據(jù):名字和年齡共同行為:說話特有行為:寫作業(yè)特有行為:上班特有數(shù)據(jù):性別二、層次結(jié)構(gòu)

二、層次結(jié)構(gòu)1classLife(object):

2

def__init__(self,name,age):

3

self.name=name

4

self.age=age

56

defspeak(self):

7

print("你好")89life=Life('li',20)

10life.speak()#輸出:你好生命類,包括名字和年齡兩個實例變量、一個說話方法。二、層次結(jié)構(gòu)1classCat(Life):

2

pass34cat1=Cat('c1',4)

5cat1.speak()輸出:你好1classDog(Life):

2

defspeak(self):

3

print("你好,我是一只狗")45dog1=Dog('d1',5)

6dog1.speak()輸出:你好,我是一只狗子類默認繼承父類的方法和數(shù)據(jù)。子類實現(xiàn)父類的同名方法,而且參數(shù)相同(避免參數(shù)不同),稱為重寫(override)。通過這種方式定義子類的特有行為。二、層次結(jié)構(gòu)1classCat(Life):

2

pass34life=Cat('c1',4)

5life.speak()輸出:你好1classDog(Life):

2

defspeak(self):

3

print("你好,我是一只狗")45life=Dog('d1',5)

6life.speak()輸出:你好,我是一只狗life是屬于Life的子類實例。因為Life這個父類有speak()方法,那么子類也有speak()方法。由于子類重寫了父類的speak()方法,那么子類和父類的speak()方法行為不同。根據(jù)life屬于的子類類型,決定speak()方法的行為。二、層次結(jié)構(gòu)子類中的方法調(diào)用順序:實例調(diào)用一個方法時,先從自身所屬的類中找,如果找不到,從父類中找,如果還找不到,從父類的父類中找,依次找下去。執(zhí)行找到的第一個方法。如果一直到object仍然找不到這個方法,發(fā)生錯誤。重寫的好處:子類能夠根據(jù)需要實現(xiàn)父類的方法,只用根據(jù)父類的方法進行設(shè)計。便于擴展。1classPerson(Life):

2

def__init__(self,name,age,sex):

3

super().__init__(name,age)

4

self.sex=sex

5

6

defspeak(self):

7

print("你好,我是一個人")

8

9

defeat(self):

10

print("我在吃飯")1112person1=Person('p1',30,'man')

13person1.speak()

14person1.eat()15life=Life('li',20)16life.eat()

!發(fā)生錯誤子類有新的數(shù)據(jù)時,需要寫子類的構(gòu)造函數(shù),并顯式調(diào)用父類的構(gòu)造函數(shù)。這里super().__init__調(diào)用父類的構(gòu)造函數(shù),傳入父類需要的參數(shù)。當子類有新的方法時,直接在子類定義這些方法。父類無法調(diào)用子類獨有的方法。二、層次結(jié)構(gòu)如果重寫方法后,需要調(diào)用父類的方法修改Person類中speak()方法的定義1defspeak(self,parent_method=False):

2

ifparent_method:

3

super().speak()

4

else:

5

print("你好,我是一個人")67person1=Person('p1',30,'man')8person1.speak()#輸出:你好,我是一個人9person1.speak(True)#輸出:你好子類重寫父類的方法后,可以用super()調(diào)用父類中的方法。二、層次結(jié)構(gòu)判斷實例屬于哪個類型1classPerson(Life):

2

…34person1=Person('p1',30,'man')

5

print(isinstance(person1,Person))#True

6

print(isinstance(person1,Life))#True

7

print(isinstance(person1,object))#True

8

print(isinstance(person1,Cat))#False

9

print(isinstance(person1,Dog))#False1011

print(isinstance(1,int))#Trueisinstance(o,t),判斷實例o是否屬于t類型三、設(shè)計模式設(shè)計代碼的準則,①.每個類盡量只負責一個功能領(lǐng)域。②.擴展功能時,盡量不修改原有代碼。③.實現(xiàn)功能時,針對父類的方法設(shè)計。三、設(shè)計模式設(shè)計模式有很多,給出兩種簡單的模式。一、外觀模式Facadepattern:當我們有很多不同類的實例共同完成一個任務(wù)時,應(yīng)該新建一個外觀類,將不同實例交互的過程封裝起來,只給外界留下幾個基本的方法。二、模板模式Templatepattern。在父類中聲明方法,子類中實現(xiàn)方法。三、設(shè)計模式-外觀模式例5:假定已知訓練數(shù)據(jù)train_data和待預(yù)測的數(shù)據(jù)predict_data,建立一個數(shù)據(jù)分析基本框架。(model.py)①數(shù)據(jù)預(yù)處理②分析方法③評估每個步驟設(shè)計一個類。輸入訓練數(shù)據(jù)和預(yù)測數(shù)據(jù)輸出預(yù)測結(jié)果和模型效果①.數(shù)據(jù)預(yù)處理。1classPreProcess:

2

defstandardize(self,data):

3

pass

②.分析方法。1classAlgorithm:

2

deffit(self,train_data):

3

pass

4defpredict(self):

5

pass③.評估。1classEvaluate:

2

defevaluate(self,new_data,prediction):

3

pass1preProcess=PreProcess()#建立預(yù)處理類實例

2algorithm=Algorithm()#建立訓練方法類實例

3evaluate=Evaluate()#建立評估類實例

4train_data=preProcess.standardize(train_data)#訓練數(shù)據(jù)標準化

5predict_data=preProcess.standardize(predict_data)#預(yù)測數(shù)據(jù)標準化

6algorithm.fit(train_data)#擬合數(shù)據(jù)

7prediction=algorithm.predict(predict_data)#做預(yù)測

8evaluate.evaluate(predict_data,prediction)#預(yù)測效果評估三、設(shè)計模式-外觀模式建模①數(shù)據(jù)預(yù)處理②分析方法③評估輸入訓練數(shù)據(jù)和預(yù)測數(shù)據(jù)輸出預(yù)測結(jié)果和模型效果輸入訓練數(shù)據(jù)、預(yù)測數(shù)據(jù)、預(yù)處理方法、分析方法、評估方法輸出預(yù)測結(jié)果和模型效果④.建模類。1classModel:

2

def__init__(self,preProcess,algorithm,evaluate,train_data,predict_data):

3

self.preProcess=preProcess

4

self.algorithm=algorithm

5

self.evaluate=evaluate

6

self.train_data=train_data

7

self.predict_data=predict_data

8

9

defmodel(self):

10train_data=self.preProcess.standardize(self.train_data)#對訓練數(shù)據(jù)預(yù)處理

11

predict_data=self.preProcess.standardize(self.predict_data)#對測試數(shù)據(jù)預(yù)處理

12

self.algorithm.fit(train_data)#用訓練數(shù)據(jù)擬合模型

13

prediction=self.algorithm.predict(predict_data)#做預(yù)測

14

self.evaluate.evaluate(predict_data,prediction)#評估預(yù)測效果1preProcess=PreProcess()#建立預(yù)處理類實例

2algorithm=Algorithm()#建立訓練方法類實例

3

evaluate=Evaluate()#建立評估類實例

4

model=Model(preProcess,algorithm,evaluate,train_data,predict_data)#建模類實例

5

model.model()#建模流程三、設(shè)計模式-模板模式二、模板模式,在父類中聲明方法,子類中實現(xiàn)方法。定義了一個結(jié)構(gòu)。例如,擴展前面例子中的建模方法,增加線性回歸、lasso線性回歸。1classLinearRegression(Algorithm):

2

deffit(self,train_data):

3

#具體代碼

4

defpredict(self,predict_data):

5

#具體代碼1classLinearRegressionLasso(Algorithm):

2

def__init__(self,lambda_value):

3

self.lambda_value=lambda_value

4

deffit(self,train_data):

5

#具體代碼

6

defpredict(self,predict_data):

7

#具體代碼1classAlgorithm:

2

deffit(self,train_data):

3

pass

4defpredict(self,predict_data):

5

pass父類,fit只有聲明對于線性回歸和lasso線性回歸,只用更改第2句algorithm=LinearRegression()#建立線性回歸方法algorithm=LinearRegressionLasso(0.1)#建立Lasso線性回歸方法1preProcess=PreProcess()#建立預(yù)處理類

2algorithm=Algorithm()#建立訓練類

3

evaluate=Evaluate()#建立評估類

4

model=Model(preProcess,algorithm,evaluate,train_data,predict_data)#建模類

5

model.model()#建模流程四、模塊如果代碼中多次使用同一操作,可將這個操作寫成模塊,使用時直接調(diào)用這個模塊,避免冗余代碼。或者,每個類放在一個模塊中,避免代碼過長,看起來也更清晰。例如,代碼中多次要用到一個操作,第一個數(shù)加上第二個數(shù)。寫成模塊中的一個函數(shù)(或者用類)。(myalgo.py,use_myalgo.py)四、模塊①.新建一個myalgo.pymyalgo.py:1defss(a,b):

2

returna+b

3

4print(ss(1,1))輸出:2②.同級目錄下新建一個compute.pycompute.py:1fromexample_6_moduleimportmyalgo

2print(myalgo.ss(2,2))輸出:24在import導入模塊時,執(zhí)行了模塊文件中的print(ss(1,1))在python工程的根目錄新建了文件夾example_6_module來放代碼。四、模塊解決方案一:myalgo.py:1defss(a,b):

2

returna+b

解決方案二:myalgo.py:1defss(a,b):

2

returna+b

3

4if__name__=='__main__':

5

print(ss(1,1))如果直接執(zhí)行這個文件,會執(zhí)行print(ss(1,1))。如果import這個文件,不會執(zhí)行print(ss(1,1))。缺點:①.當函數(shù)較復雜時,需要測試這個函數(shù)。②.需要這個文件本身也能夠執(zhí)行任務(wù)。四、模塊①.新建一個myalgo.pymyalgo.py:1defss(a,b):

2

returna+b

3

4if__name__=='__main__':

5

print(ss(1,1))直接執(zhí)行時,輸出:2②.同級目錄下新建一個compute.pycompute.py:1fromexample_6_moduleimportmyalgo

2print(myalgo.ss(2,2))輸出:4四、模塊myalgo.py:1defss(a,b):

2

returna+b*2

3

4if__name__=='__main__':

5

print(ss(1,1))這個__name__稱為文件模塊名。當直接執(zhí)行源文件時,源文件處于主程序,那么__name__=

‘__main__’。否則,如果這個文件被當作一個模塊導入,那么__name__為模塊的名字。四、模塊①.新建一個myalgo.pymyalgo.py:1defss(a,b):

2

returna+b

3

4if__name__=='__main__':

5

print(ss(1,1))6else:

7

print(__name_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論