Python面向對象-概念、類、實例


OOP——Object Oriented Programming,面向對象編程,是一種程序設計思想。該思想將對象作為程序的基本單元,一個對象包含了數據和操作數據的函數。

區別於面向過程的程序設計即把計算機程序視為一系列的命令集合(即一組函數的順序集合),面向對象的程序設計是把計算機程序視為一組對象的集合,每個對象都可以接受其他對象發過來的消息,並可以處理這些消息,計算機程序的執行就是一系列消息在各個對象之間的傳遞。

”萬物皆對象“!

面向對象的設計思想是人們觀察自然中現象的一種認知模式。想想,自然界中,類class和實例Instance的概念是不是很自然而然的呢?比如,定義類Class——動物,而實例Instance則是一個個具體的動物,比如說狗、貓就是兩個具體的動物。

面向對象的設計思想就是抽象出class,然后根據class創建Instance。因為一個class既包含數據,又包含操作數據的方法,所以可以說面向對象的抽象程度比面向函數要高。

Python中所有的數據類型都可以視為對象,也可以自定義對象。自定義對象就是面向對象中的類(Class)的概念。

舉例:

通過class關鍵字來定義一個Student的類:

 class Student(object):
     pass

定義好了Student類(模板)后,就可以根據Student類創建出Student的實例。創建實例是通過類名+()實現的:

>>> WC = Student()
>>> Student
<class '__main__.Student'>
>>> WC
<__main__.Student object at 0x03783270>

從上述結果可以看出,WC指向的是Student的實例,內存地址為0x03783270。而Student本身則是一個類,並沒有分配內存地址。

既然類實際是一個模板的作用,那么我們在設計模板的時候,把一些我們認為的一些通用的屬性或者行為強制性的賦予給模板,以后新建實例的實例,就會直接持有這些通用的屬性或者行為了。一般的,通過__init__方法,實現上述過程。

比如,我們認為Student一般都會有name、score屬性:

class Student(object):
    def __init__(self,name,score
            self.name = name
            self.score = score

注意,__init__方法的第一個參數永遠都是self,表示創建的實例本身。在__init__方法內部,就可以把屬性綁定到self上。有了__init__函數后,創建實例的時候,就必須傳入於__init__方法匹配的參數,其中self不需要傳:

>>> WC = Student('Wuchong',99)
>>> WC.name
'Wuchong'
>>> WC.score
99

WC就是類Student的一個實例。

和一般函數相比,類中定義的函數有點不同:就是第一個參數永遠是self,並且在調用的時候,不需要傳遞該參數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM