一丶什么是面向對象
? ? ? ?1.面向對象是一種編程思想,她是一種解決問題的思路,是將項目中的不同數據,但是又是一類數據,封裝成類型,來使用的,是對于面向過程的編程思想的補充和完善。
? ? ? 2.面向對象,有自己的三大特征,封裝、繼承、多態
? ? ? 3.面向對象的目的:提高代碼的復用性,功能的擴展性,代碼的低耦合特性,代碼的健壯性等等
二丶Python中如何表示面向對象
? ? ? python中通過定義一個類,然后通過類來表示對象的屬性和方法,然后不同的方法調用來實現面向對象的操作過程
三丶類是什么
? ? ? 既然要用過類來表示對象的屬性和方法,那我們就要知道類是什么
? ? ? 類就是一類數據類型的簡稱,是從一部分實際存在具有相似的特征和行為的實物中,抽象出來的一個概念。【是抽象的概念,并不是具體的東西】
四丶對象是什么
? ? ? ?對象就是一個實際存在的一個實體,是類的某一個實際個體,她是實際存在的,并且具有類所定義的屬性和方法
五丶類和對象的關系
? ? ? ?有了類和對象的定義,我們就能輕松的看出來類和對象的關系如下:
? ? ? ?類是同種類型的所有對象的一個抽象概念
? ? ? ?對象是類的一個實際個體【實例】
六丶如何在python中定義一個類
? ? ? ?1.首先我們要知道類的組成部分:類的名稱,屬性,和方法 三個部分組成
? ? ? ?2.名稱的定義:用class函數+類的名稱【+(object)】+:也可以不用書寫,名稱的命名方法:大駝峰命名法,即多個英文單詞每一個英文單詞的首字母大寫,并且要見名知意 例如class Users:
? ? ? ?3.屬性的定義:用__init__函數用于初始化定義的類的屬性數據,然后加上括號里的self,和屬性參數。例如def __init__ (self,name)
? ? ? ?4.方法的定義:與普通的函數定義一樣,括號中要加入self,參數,例如:def eat(self,dinner)
七丶如何創建對象
? ? ? 和執行函數一樣,對象的引用名稱(這是一個變量) = 類的名稱(對象參數),例如:u = Users("name")
八丶對象的屬性如何使用
? ? ? ?可以直接通過對象的引用名稱 + . +屬性名稱來使用,例如:print(u.name)
九丶對象的方法如何使用
? ? ? 可以直接通過對象的名稱+ . +方法名稱 + ()來調用
十丶創建對象的過程是什么?(了解概念即可)
? ? ? 1.首先,創建對象,會調用對象的__new__()函數,來申請內存,創建對象
? ? ? ?2.其次,給創建好的獨享,初始化對象的數據,自動調用__init__()函數,給對象的屬性賦值
十一丶創建好的對象,賦值給了一個變量,變量是什么類型?存放的是什么數據?
? ? ? ? 1.變量=類名稱()創建了一個對象,將對象的引用地址,賦值給了變量
? ? ? ? 2.變量(內存地址) >> 堆內存中的對象
? ? ? ? 3.type(變量) >> ?所定義的類類型
下面我們看一些實際的案例
案例一丶 定義一個簡單的用戶對象
? ? ? ? 案例中定義的類與圖1一樣,然后在創建的對象通過print函數輸出了對象的屬性,通過“u1.eat()”調用了對象的方法
? ? ? ? 然而在某些情況下我們要輸出的屬性并不是我們賦值給對象的參數,(輸入和輸出都是字符串)而是需要輸出對象的引用變量,根據上述第十一條我們知道變量存放的數據類型是類類型,并且保存的是堆內存中對象的存放地址,所以我們輸出的時候會出現這樣的結果:
? ? ? 我們發現這時輸出的變量是我們這個對象所在的內存位置,這時就需要將對象中的變量類型轉換成我們能看懂的字符串,用到的函數是def __str__(self):【如下面的案例】
案例二丶定義一個結婚的對象
? ? ? 在代碼中我們可以再次熟悉類的定義方法,和函數的創建操作,同時在圖5中也能清楚的看到__str__(self)函數的用法,這樣就可輸出變量了,如圖7
? ? ? ? 那么python中面向對象的思想和簡單的方法就先說到這里,面向對象的思想很重要,培養好這樣的思想才不至于我們在大型項目中亂了陣腳,理解代碼的含義要比記住代碼重要的多,那我們下次再見!