版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第八章 類與對象Python支持創(chuàng)建自己的對象,Python從設(shè)計(jì)之初就是一門面向?qū)ο笳Z言,它提供了一些語言特性支持面向?qū)ο缶幊?。?chuàng)建對象是Python的核心概念,本章將介紹如何創(chuàng)建對象,以及多態(tài)、封裝、方法和繼承等概念。Python快樂學(xué)習(xí)班的同學(xué)結(jié)束函數(shù)樂高積木廳的創(chuàng)意學(xué)習(xí)后,導(dǎo)游帶領(lǐng)他們來到對象動(dòng)物園。在對象動(dòng)物園,將為同學(xué)們呈現(xiàn)各種動(dòng)物對象,同學(xué)們將在這里了解各種動(dòng)物所屬的類別,各種動(dòng)物所擁有的技能,以及它們的技能繼承自哪里等知識(shí)點(diǎn)?,F(xiàn)在跟隨Python快樂學(xué)習(xí)班的同學(xué)一起進(jìn)入對象動(dòng)物園觀摩吧!8.1 理解面向?qū)ο?.1.1 面向?qū)ο缶幊蘌ython是一門面向?qū)ο缶幊陶Z言,對面向?qū)ο笳Z
2、言編碼的過程就叫做面向?qū)ο缶幊?。面向?qū)ο缶幊蘋bject Oriented Programming,簡稱OOP,是一種程序設(shè)計(jì)思想。OOP把對象作為程序的基本單元,一個(gè)對象包含了數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)。面向?qū)ο蟮某绦蛟O(shè)計(jì)把計(jì)算機(jī)程序視為一組對象的集合,每個(gè)對象都可以接收其他對象發(fā)過來的消息,并處理這些消息,計(jì)算機(jī)程序的執(zhí)行就是一系列消息在各個(gè)對象之間傳遞。在Python中,所有數(shù)據(jù)類型都被視為對象,也可以自定義對象。自定義的對象數(shù)據(jù)類型就是面向?qū)ο笾械念悾–lass)的概念。8.1.2 面向?qū)ο笮g(shù)語簡介類(Class):用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個(gè)對象所共有的屬
3、性和方法。對象是類的實(shí)例。類變量(或?qū)傩裕侯愖兞吭谡麄€(gè)實(shí)例化的對象中是公用的。類變量定義在類中且在方法之外。類變量通常不作為實(shí)例變量使用。類變量也稱作屬性。數(shù)據(jù)成員:類變量或者實(shí)例變量用于處理類及其實(shí)例對象的相關(guān)的數(shù)據(jù)。方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進(jìn)行改寫,這個(gè)過程叫方法的覆蓋(override),也稱為方法的重寫。實(shí)例變量:定義在方法中的變量,只作用于當(dāng)前實(shí)例的類。多態(tài)(Polymorphism):對不同類的對象使用同樣的操作。封裝(Encapsulation):對外部世界隱藏對象的工作細(xì)節(jié)。繼承(Inheritance):即一個(gè)派生類(derived cla
4、ss)繼承基類(base class)的字段和方法。繼承也允許把一個(gè)派生類的對象作為一個(gè)基類對象對待。以普通的類為基礎(chǔ)建立專門的類對象。實(shí)例化(Instance):創(chuàng)建一個(gè)類的實(shí)例,類的具體對象。方法:類中定義的函數(shù)。對象:通過類定義的數(shù)據(jù)結(jié)構(gòu)實(shí)例。對象包括兩個(gè)數(shù)據(jù)成員(類變量和實(shí)例變量)和方法。Python中的類提供了面向?qū)ο缶幊痰乃谢竟δ埽侯惖睦^承機(jī)制允許多個(gè)基類,派生類可以覆蓋基類中的任何方法,方法中可以調(diào)用基類中的同名方法。對象可以包含任意數(shù)量和類型的數(shù)據(jù)。8.2 類的定義與使用8.2.1 類的定義類定義的語法格式如下:class ClassName(object): . Pyth
5、on中定義類使用class關(guān)鍵字,class后面緊跟類名。示例如下(my_class.py):class MyClass(object): i=123 def f(self): return hello world由代碼可以看到,這里定義了一個(gè)名為MyClass的類。在Python中,類名一般由以大寫字母開頭的單詞命名,并且若是由多個(gè)單詞組成的類名,那各個(gè)單詞的首字母都大寫。類名后面緊接著是(object),object表示該類是從哪個(gè)類繼承的。通常,如果沒有合適的繼承類,就使用object類,這是所有類最終都會(huì)繼承的類。類包含屬性(相當(dāng)于函數(shù)中的語句)和方法(類中的方法大體可以理解成第7章所
6、學(xué)的函數(shù))。在類中定義的方法的形式和函數(shù)差不多,但不稱為函數(shù),而稱為方法。因?yàn)榉椒ㄐ枰款悓ο笕フ{(diào)用,而函數(shù)不需要。8.2.2 類的使用class MyClass(object): i = 123 def f(self): return hello worlduse_class = MyClass()print(調(diào)用類的屬性:,use_class.i)print(調(diào)用類的方法:,use_class.f()類的使用比函數(shù)調(diào)用多了幾個(gè)操作,調(diào)用需要執(zhí)行如下操作:use_class = MyClass()這步叫做類的實(shí)例化,即創(chuàng)建一個(gè)類的實(shí)例,此處得到的use_class這個(gè)變量稱為類的具體對象。再
7、看后面兩行的調(diào)用:print(f調(diào)用類的屬性:use_class.i)print(f調(diào)用類的方法:use_class.f()這里第一行后面use_class.i部分的作用是調(diào)用類的屬性,也就是前面所說的類變量。第二行后面use_class.f()部分的作用是調(diào)用類的方法。在類中定義方法的要求:在類中定義方法時(shí),第一個(gè)參數(shù)必須是self。除第一個(gè)參數(shù)之外,類的方法和普通函數(shù)沒什么區(qū)別,如可以用默認(rèn)參數(shù)、可變參數(shù)、關(guān)鍵字參數(shù)和命名關(guān)鍵字參數(shù)等。 在類中調(diào)用方法的要求:要調(diào)用一個(gè)方法,在實(shí)例變量上直接調(diào)用即可。除了self不用傳遞,其他參數(shù)正常傳入。類對象支持兩種操作,屬性引用和實(shí)例化。實(shí)例化方式上
8、面已經(jīng)介紹過,屬性引用的標(biāo)準(zhǔn)語法格式如下:語法中,obj代表類對象,name代表屬性。8.3 深 入 類本節(jié)將深入介紹類的相關(guān)內(nèi)容,如類的構(gòu)造方法和訪問權(quán)限。8.3.1 類的構(gòu)造方法對前面的示例做一些改動(dòng),改動(dòng)后代碼如下(my_calss_search.py):class MyClass(object): i = 123 def _init_(self, name): = name def f(self): return hello,+ use_class = MyClass(xiaomeng)print(調(diào)用類的屬性:,use_class
9、.i)print(調(diào)用類的方法:,use_class.f()實(shí)例化MyClass這個(gè)類時(shí),調(diào)用了_init_()這個(gè)方法。在Python中,_init_()方法是一個(gè)特殊的方法,當(dāng)對象實(shí)例化時(shí)會(huì)被調(diào)用,_init_()的意思是初始化,是initialization的簡寫。這個(gè)方法的書寫方式是:先兩個(gè)下劃線,后面接著是init,再接著兩個(gè)下劃線。這個(gè)方法也叫構(gòu)造方法。在定義類時(shí),若不顯式定義一個(gè)_init_()方法,則程序默認(rèn)調(diào)用一個(gè)無參的_init_()方法。在Python中,定義類時(shí),若沒有定義構(gòu)造方法(_init_()方法),在類的實(shí)例化時(shí),系統(tǒng)會(huì)調(diào)用默認(rèn)的構(gòu)造方法。另外,_init_()
10、方法可以有參數(shù),參數(shù)通過_init_()傳遞到類的實(shí)例化操作上。一個(gè)類中可用定義多個(gè)構(gòu)造方法,但類實(shí)例化時(shí)只實(shí)例化其中位于最后的一個(gè)構(gòu)造方法,也即后面的構(gòu)造方法會(huì)覆蓋前面的構(gòu)造方法,并且實(shí)例化時(shí)需要根據(jù)最后一個(gè)構(gòu)造方法的形式進(jìn)行實(shí)例化。建議一個(gè)類中只定義一個(gè)構(gòu)造函數(shù)。8.3.2 類的訪問權(quán)限在類內(nèi)部,可以有屬性和方法,而外部代碼可以通過直接調(diào)用實(shí)例變量的方法來操作數(shù)據(jù),這樣,就隱藏了內(nèi)部的復(fù)雜邏輯。要讓內(nèi)部屬性不被外部訪問,可以在屬性的名稱前加上兩個(gè)下劃線_,在Python中,實(shí)例的變量名如果以_開頭,就變成了一個(gè)私有變量(private),只有內(nèi)部可以訪問,外部不能訪問。在Python中,可
11、以給類增加get_attrs這樣的方法來獲取類中的私有變量。在Python中,可以再給類增加set_attrs這樣的方法來修改類中的私有變量。在Python中,通過定義私有變量和定義對應(yīng)的set方法,可以幫助我們做參數(shù)檢查,避免傳入無效的參數(shù)。類還有私有方法。類的私有方法也是以兩個(gè)下劃線開頭,聲明該方法為私有方法,且不能在類的外使用。8.4 繼 承繼承的語法格式如下:class DerivedClassName(BaseClassName): . . 面向?qū)ο蟮木幊處淼闹饕锰幹皇谴a的重用,實(shí)現(xiàn)這種重用的方法之一是通過繼承機(jī)制。繼承完全可以理解成類之間的類型和子類型關(guān)系。在面向?qū)ο蟪绦蛟O(shè)
12、計(jì)中,當(dāng)我們定義一個(gè)class的時(shí)候,可以從某個(gè)現(xiàn)有的class繼承,定義的新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Base class、Super class)。繼承語法class子類名(基類名):基類名寫在括號(hào)里,基本類是在類定義的時(shí)候,在元組之中指明的。在python中繼承中的一些特點(diǎn):(1)在繼承中,基類的構(gòu)造方法(_init_()方法)不會(huì)被自動(dòng)調(diào)用,它需要在其子類的構(gòu)造方法中專門調(diào)用。(2)在調(diào)用基類的方法時(shí),需要加上基類的類名前綴,且需要帶上self參數(shù)變量。區(qū)別于在類中調(diào)用普通函數(shù)時(shí)并不需要帶上self參數(shù)。(3)Python總是首
13、先查找對應(yīng)類型的方法,如果不能在子類中找到對應(yīng)的方法,它才到基類中逐個(gè)查找。繼承有什么好處?最大的好處是子類獲得了父類的全部非私有的功能。class Animal(object): def run(self): print(Animal is running.)定義類:class Dog(Animal): passclass Cat(Animal): passdog = Dog()dog.run()cat = Cat()cat.run()8.5 多重繼承Python還支持多重繼承。多重繼承的語法格式如下:class DerivedClassName(Base1, Base2, Base3):
14、. 可以看到,多重繼承就是在定義類時(shí),在類名后面的圓括號(hào)中添加多個(gè)基類(父類或超類),各個(gè)基類之間使用逗號(hào)分隔。需要注意圓括號(hào)中父類的順序,若父類中有相同的方法名,在子類使用時(shí)未指定,Python會(huì)從左到右進(jìn)行搜索。即若某個(gè)方法在子類中沒有定義,則子類從左到右查找各個(gè)父類中是否包含這個(gè)方法。通過類的多重繼承,一個(gè)子類就可以繼承多個(gè)父類,并從多個(gè)父類中取得所有非私有方法。8.6 多 態(tài)使用繼承,可以重復(fù)使用代碼。但對于繼承中的示例,無論是Dog類還是Cat類,調(diào)用父類的run()方法時(shí)顯示的都是Animal is running.。對Dog類和Cat類做如下改進(jìn)(完整代碼見animal_3.py
15、):class Dog(Animal): def run(self): print(Dog is running.) class Cat(Animal): def run(self): print(Cat is running.)執(zhí)行如下語句:dog = Dog()print(實(shí)例化Dog類)dog.run()cat = Cat()print(實(shí)例化Cat類)cat.run()執(zhí)行結(jié)果如下:實(shí)例化Dog類Dog is running.實(shí)例化Cat類Cat is running.由執(zhí)行結(jié)果看到,分別得到了Dog和Cat各自的running結(jié)果。當(dāng)子類和父類都存在相同的run()方法時(shí),子類的ru
16、n()方法會(huì)覆蓋了父類的run()方法,在代碼運(yùn)行的時(shí)候,總是會(huì)調(diào)用子類的run()方法。我們稱這個(gè)為:多態(tài)。多態(tài)這個(gè)術(shù)語來自希臘語,意思是有多種形式。多態(tài)意味著就算不知道變量所引用的對象類型是什么,還是能對對象進(jìn)行操作,而多態(tài)也會(huì)根據(jù)對象(或類)的不同而表現(xiàn)出不同的行為。例如我們上面定義的Animal類,在類中定義了run方法,Dog和Cat類分別繼承Animal類,并且分別定義了自己的run方法,最后Dog和Cat調(diào)用run方法時(shí),調(diào)用的是自己的定義的run方法。多態(tài)的好處就是,當(dāng)我們需要傳入Dog、Cat等對象時(shí),我們只需要接收Animal類型就可以了,因?yàn)镈og、Cat等都是Anima
17、l類型,然后,按照Animal類型進(jìn)行操作即可。多態(tài)的意思是:對于一個(gè)變量,我們只需要知道它是Animal類型,無需確切地知道它的子類型,就可以放心地調(diào)用run()方法,而具體調(diào)用的run()方法是作用在Animal、Dog、Cat對象上,由運(yùn)行時(shí)該對象的確切類型決定。多態(tài)真正的威力在于:調(diào)用方只管調(diào)用,不管細(xì)節(jié),而當(dāng)我們新增一種Animal的子類時(shí),只要確保run()方法編寫正確,不用管原來的代碼是如何調(diào)用的。這就是著名的“開閉”原則:對擴(kuò)展開放:允許新增Animal子類。對修改封閉:不需要修改依賴Animal類型的函數(shù)。很多函數(shù)和運(yùn)算符都是多態(tài)的你寫的絕大多數(shù)程序可能也是,即便你并非有意這
18、樣。8.7 封 裝封裝是對全局作用域中其他區(qū)域隱藏多余信息的原則。聽起來有些像多態(tài)使用對象而不用知道其內(nèi)部細(xì)節(jié),兩者概念類似,因?yàn)樗鼈兌际浅橄蟮脑瓌t它們都會(huì)幫忙處理程序組件而不用過多關(guān)系細(xì)節(jié),就像函數(shù)一樣。但是封裝并不等同于多態(tài)。多態(tài)可以讓用戶對于不知道什么類(或?qū)ο箢愋停┑膶ο筮M(jìn)行方法調(diào)用,而封裝是可以不用關(guān)心對象是如何構(gòu)建的而直接進(jìn)行使用。前面幾節(jié)的示例基本都有用到封裝的思想,如在前面定義的Student類中,每個(gè)實(shí)例就擁有各自的name和score這些數(shù)據(jù)。我們可以通過函數(shù)來訪問這些數(shù)據(jù),比如打印學(xué)生的成績,我們?nèi)缦露x(student.py):class Student(object)
19、: def _init_(self, name, score): =name self.score=scorestd=Student(xiaozhi,90)def info(std): print(f學(xué)生:;分?jǐn)?shù): std.score)info(std)既然Student實(shí)例本身就擁有這些數(shù)據(jù),要訪問這些數(shù)據(jù),就沒有必要從外面的函數(shù)去訪問,可以直接在Student類的內(nèi)部定義訪問數(shù)據(jù)的函數(shù),這樣,就把“數(shù)據(jù)”給封裝起來了。class Student0(object): def _init_(self, name, score): =name
20、self.score=score def info(self): print(f學(xué)生:;分?jǐn)?shù): self.score)要定義一個(gè)方法,除了第一個(gè)參數(shù)是self外,其他和普通函數(shù)一樣。要調(diào)用一個(gè)方法,只需要在實(shí)例變量上直接調(diào)用,除了self不用傳遞,其他參數(shù)正常傳入,執(zhí)行如下語句:stu = Student0(xiaomeng,95)封裝的另一個(gè)好處是可以給Student類增加新的方法。8.8 獲取對象信息當(dāng)我們調(diào)用一個(gè)方法時(shí),可能需要傳遞一個(gè)參數(shù),這個(gè)參數(shù)類型我們是知道的,但是對于接收參數(shù)的方法,就不一定知道參數(shù)是什么類型了。那我們該怎么來得知參數(shù)的類型呢?Python為我們
21、提供了如下幾種獲取對象類型的方法,具體如下:1. 使用type()我們前面已經(jīng)學(xué)習(xí)過type函數(shù)的使用,基本類型都可以用type()判斷。如: type(123) type(abc) type(None)2. 使用isinstance()要明確class的繼承關(guān)系,使用type()很不方便,通過判斷class的數(shù)據(jù)類型,來確定class的繼承關(guān)系,這樣要方便的多,這個(gè)時(shí)候可以使用isinstance()函數(shù)。比如對于繼承關(guān)系是如下的形式:object - Animal - Dog即Animal繼承object,Dog繼承Animal,使用isinstance()就可以告訴我們,一個(gè)對象是否是某
22、種類型。例如創(chuàng)建如下2種類型的對象: animal = Animal() dog = Dog()對上面2種類型對象,使用isinstance判斷如下: isinstance(dog, Dog)True根據(jù)打印結(jié)果看到,dog是Dog類型,這個(gè)是沒有任何疑問的,因?yàn)閐og變量指向的就是Dog對象。接下來再判斷Animal的類型,使用isinstance判斷如下: isinstance(dog, Animal)True根據(jù)打印結(jié)果看到,dog也是Animal類型。由此我們得知:dog雖然自身是Dog類型,但由于Dog是從Animal繼承下來的,所以,dog也還是Animal類型。換句話說,isin
23、stance()判斷的是一個(gè)對象是否是該類型本身,或者是否是該類型繼承類的類型。因此,我們可以確信,dog還是object類型: isinstance(dog, object)True同時(shí)也確信,實(shí)際類型是Dog類型的dog,同時(shí)也是Animal類型: isinstance(dog, Dog) and isinstance(dog, Animal)True3. 使用dir()如果要獲得一個(gè)對象的所有屬性和方法,可以使用dir()函數(shù),它返回一個(gè)字符串的list如要獲得一個(gè)str對象的所有屬性和方法,使用方式如下: dir(abc)8.9 類的專有方法Python類還可以定義專用方法,專用方法是
24、在特殊情況下或當(dāng)使用特別語法時(shí)由 Python替你調(diào)用的,而不是像普通的方法那樣在代碼中直接調(diào)用。本節(jié)我們講述幾個(gè)Python比較常用的專有方法??吹筋愃芲init_這種形如_xxx_的變量或者函數(shù)名就要注意,這些在Python中是有特殊用途的。_init_我們已經(jīng)知道怎么用了,Python的class中有許多這種有特殊用途的函數(shù),可以幫助我們定制類。下面來介紹這種特殊類型的函數(shù)定制類的方法。1. _str_()方法class Student(object): def _init_(self, name): = name def _str_(self): return 學(xué)生
25、名稱: %s % print(Student(xiaozhi)輸出結(jié)果為:結(jié)果輸出的是一堆字符串,基本沒有人看得懂,這樣打印出來的結(jié)果沒有可用性。怎樣才能輸出讀者能看懂,并且是可用的結(jié)果?要解決這個(gè)問題,需要定義_str_()方法,通過_str_()方法返回一個(gè)易懂的字符串就可以了。重新定義上面的示例(student_2.py):class Student(object): def _init_(self, name): =name def _str_(self): return f學(xué)生名稱: print(Student(xiaozhi)程
26、序輸出結(jié)果為:學(xué)生名稱: xiaozhi如果在交互模式下輸入: s=Student(xiaozhi) s由輸出結(jié)果可以看到,將實(shí)例化的類對象賦給一個(gè)變量,輸出變量的實(shí)例還是和之前一樣,是一串基本看不懂的字符。直接顯示變量調(diào)用的不是_str_()方法,而是_repr_()方法,兩者的區(qū)別在于_str_()方法返回用戶看到的字符串,而_repr_()方法返回程序開發(fā)者看到的字符串。也就是說,_repr_()方法是為調(diào)試服務(wù)的。所以這個(gè)問題的解決辦法是再定義一個(gè)_repr_()方法。通常,_str_()方法和_repr_()方法是一樣的,所以有一個(gè)巧妙的寫法(student_3.py):class
27、Student(object): def _init_(self, name): =name def _str_(self): return f學(xué)生名稱: _repr_=_str_在交互模式下執(zhí)行: s=Student(xiaozhi) s學(xué)生名稱: xiaozhi2. _iter_()方法如果一個(gè)類想被用于for . in循環(huán),類似list或tuple那樣,就必須實(shí)現(xiàn)一個(gè)_iter_()方法,該方法返回一個(gè)迭代對象,Python的for循環(huán)會(huì)不斷調(diào)用該迭代對象的_next_()方法拿(“拿”是否可以更改為“獲得”)到循環(huán)的下一個(gè)值,直到遇到StopIte
28、ration錯(cuò)誤時(shí)退出循環(huán)。class Fib(object): def _init_(self): self.a, self.b = 0, 1 # 初始化兩個(gè)計(jì)數(shù)器a,b def _iter_(self): return self # 實(shí)例本身就是迭代對象,故返回自己 def _next_(self): self.a, self.b = self.b, self.a + self.b # 計(jì)算下一個(gè)值 if self.a 100000: # 退出循環(huán)的條件 raise StopIteration(); return self.a # 返回下一個(gè)值3. _getitem_()方法Fib實(shí)例雖然
29、能作用于for循環(huán),看起來和list有點(diǎn)像,但是,把它當(dāng)成list來使用還是不行,要表現(xiàn)得像list那樣按照下標(biāo)取出元素,需要實(shí)現(xiàn)_getitem_()方法,如下實(shí)現(xiàn):class Fib(object): def _getitem_(self, n): a, b = 1, 1 for x in range(n): a, b = b, a + b return a4. _getattr_()方法前面示例講述過,正常情況下,當(dāng)調(diào)用類的方法或?qū)傩詴r(shí),如果不存在,就會(huì)報(bào)錯(cuò)。要避免這個(gè)錯(cuò)誤,除了可以加上一個(gè)score屬性外,Python還有另一個(gè)機(jī)制,那就是寫一個(gè)_getattr_()方法,動(dòng)態(tài)返回一個(gè)
30、屬性。如下:class Student(object): def _init_(self): = xiaozhi def _getattr_(self, attr): if attr=score: return 95當(dāng)調(diào)用不存在的屬性(如score)時(shí),Python解釋器會(huì)調(diào)用_getattr_(self, score)嘗試獲得屬性,這樣就有機(jī)會(huì)返回score的值。在交互模式下輸入: stu=Student() xiaozhi stu.score95由輸出結(jié)果可以看到,通過調(diào)用_getattr_()方法,可以正確輸出不存在的屬性的值。注意,程序只有在沒有找到
31、屬性的情況下才調(diào)用_getattr_(),若已有屬性(如name),則不會(huì)在_getattr_()方法中查找。此外,所有_getattr_()方法的調(diào)用都有返回值,都會(huì)返回None(如stu.abc),定義的_getattr_()默認(rèn)返回None。5. _call_() 方法一個(gè)對象實(shí)例可以有自己的屬性和方法,當(dāng)調(diào)用實(shí)例的方法時(shí),采用的方式是使用instance.method()來調(diào)用。任何類,只需要定義一個(gè)_call_()方法,就可以直接對實(shí)例進(jìn)行調(diào)用。如下示例:class Student(object): def _init_(self, name): =name def _call_(self): print(f名稱:)_call_()還可以定義參數(shù)。在交互模式下輸入: stu=Student(xiaomeng) stu()名稱:xiaomeng由輸出結(jié)果可以看到,通過定義_call_()方法,可以直接對實(shí)例進(jìn)行調(diào)用并得到結(jié)果。_call_()方法還可以定義參數(shù)。對實(shí)例進(jìn)行直接調(diào)用就像對一個(gè)函數(shù)進(jìn)行調(diào)用一樣,完全可以把對象看成函數(shù),把函數(shù)看成對象,因?yàn)檫@兩者本來就沒有根本區(qū)別。如果把對象看成函數(shù),函數(shù)本身就可以在運(yùn)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年金融服務(wù)采購合同創(chuàng)新金融產(chǎn)品合作協(xié)議2篇
- 導(dǎo)演與發(fā)行方2025年度合同3篇
- 二零二五年度餐飲泔水處理與環(huán)保設(shè)施運(yùn)營管理合同6篇
- 二零二五年度高校畢業(yè)生就業(yè)見習(xí)實(shí)踐基地建設(shè)合作合同3篇
- 二零二五年度航空航天設(shè)備維修承包合同樣本3篇
- 二零二五年高性能混凝土委托加工合同范本3篇
- 碎石買賣合同(二零二五年度)2篇
- 二零二五年度藥品質(zhì)量第三方檢測合同范本6篇
- 二零二五版國際貿(mào)易中貨物所有權(quán)轉(zhuǎn)移與國際貿(mào)易政策研究合同3篇
- 2025年度電力設(shè)施租賃合同標(biāo)的轉(zhuǎn)讓協(xié)議3篇
- 課題申報(bào)書:大中小學(xué)鑄牢中華民族共同體意識(shí)教育一體化研究
- 巖土工程勘察課件0巖土工程勘察
- 《腎上腺腫瘤》課件
- 2024-2030年中國典當(dāng)行業(yè)發(fā)展前景預(yù)測及融資策略分析報(bào)告
- 《乘用車越野性能主觀評價(jià)方法》
- 幼師個(gè)人成長發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語試題及解答參考
- 批發(fā)面包采購合同范本
- 乘風(fēng)化麟 蛇我其誰 2025XX集團(tuán)年終總結(jié)暨頒獎(jiǎng)盛典
- 2024年大數(shù)據(jù)分析公司與中國政府合作協(xié)議
- 一年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)匯編
評論
0/150
提交評論