Python初識物件導向

2022-09-17 23:12:23 字數 3083 閱讀 7614

面向過程的聖墟設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什麼時候處理什麼東西

優點是:極大的降低了寫程式的複雜度,只需要順著執行步驟,堆疊**即可。

缺點是:一套流水線或者流程就是用來解決乙個問題,**牽一髮而東全身

應用場景:一旦完成基本很少改變的場景,著名例子有linux核心,git,以及apache http server等

物件導向的程式設計的核心是物件(上帝式思維),要理解物件為何物,必須把自己當成上帝,上帝眼裡時間存在的萬物皆為物件,不存在的也可以創造出來。

物件導向的程式設計的:

優點:解決了程式的擴充套件性。對某乙個物件單獨修改,會立刻反映到整個體系中,如對遊戲中乙個人物引數的特性和技能修改都很容易缺點:可控性查,無法向面向過程的聖墟設計流水線式的可以很精準的**問題的處理流程與結果,物件導向的程式一旦開始就由物件之間的互動解決問題,即便是上帝也無法**最終結果。

應用場景:需求經常變化的軟體,一般需求的變化都集中在使用者層,網際網路應用,企業內部軟體,遊戲都是物件導向程式設計大顯身手的好地方

**了解python中物件導向的一些名詞類、物件、例項、例項化

類:具有相同特性的一類事物物件/例項:具體的某乙個事物

例項化:類--->物件的過程

python中一切皆為物件,型別的本質就是類。

在python中,用變數表示特徵,用函式表示技能,因而具有相同特徵和技能的一類事物就是「類」,物件則是這一類事物中具體乙個。

'''

class 類名:

'類的文件字串'

類體'''#

我們建立乙個類

class

data:

pass

class person: #

定義乙個人類

role = '

person'#

人的角色屬性都是人

def walk(self): #

人都可以走路,也就是有乙個走路方法,也叫動態屬性

print("

person is walking...

")

類的兩種作用:屬性引用和例項化

屬性引用(類名.屬性)

class person:   #

定義乙個人類

role = '

person'#

人的角色屬性都是人

def walk(self): #

人都可以走路,也就是有乙個走路方法

print("

person is walking...")

print(person.role) #

檢視人的role屬性

print(person.walk) #

引用人的走路方法,注意,這裡不是在呼叫

例項化:類名加括號就是例項化,會自動觸發__init__函式的執行,可以用它來為每個例項定製自己的特徵

例項化的過程就是類--->物件的過程

物件名 = 型別(引數)

關於self

self:在例項化時自動將物件/例項本身傳給__init__的第乙個引數,

建立乙個類就會建立乙個類的命名空間,用來儲存類中定義的所有名字,這些名字稱為類的屬性。

而類有兩種屬性:靜態屬性和動態屬性

-靜態屬性就是直接在類中定義的標量

-動態屬性就是定義在類中方法

其中類的資料屬性是共享給所有物件的

而類的動態屬性是繫結到所有物件的

建立乙個物件/例項就會建立乙個物件/例項的命名空間,存放物件/例項的名字,稱為物件/例項的屬性

在obj.name會先從obj自己的命名空間裡找name,找不到則去類中找,類也找不到就找父類...最後找不到就丟擲異常。

1、訪問物件的屬性

以下列出了幾個內建方法,可以用來檢查或是訪問物件的屬性

dir([obj]):

呼叫這個方法將返回包含obj大多數屬性名的列表(會有一些特殊的屬性不包含在內)。obj的預設值是當前的模組物件。

hasattr(obj,attr):

這個方法用於檢查obj是否有乙個名為attr的值的屬性,返回乙個布林值

getattr(obj,attr):

呼叫這個方法將返回obj中名為attr值的屬性值,例如如果attr為'bar',則返回obj.bar

srtattr(obj,attr,val):

呼叫這個方法將給obj的名為attr的值的屬性賦值為val。例如attr為'bar',則返回obj.bar

2、訪問物件的元資料

當你對乙個你構造的物件使用dir()時,可能會發展列表中的很多屬相並不是你定義的。這些屬性一般都儲存了物件的元資料,比如類的__name__屬性儲存了類名。大部分這些屬性都可以修改,不過改動它們的意義並不是很大;修改其中某些屬性如function.func_code還可能導致很難發現的問題

2.0、確定物件的型別

在types模組中定義了全部的python內建型別,結合內建方法isinstance()就可以確定物件的具體型別了。

isinstance(object,classinfo):

檢查object是不是classinfo中列舉出的型別,返回布林值。classinfo可以是乙個具體的型別,也可以是多個型別的元祖和列表

2.1、模組(module)

__doc__:文件字串。如果模組沒有文件,這個值是none

__name__:始終是定義時的模組名;即使你使用import .. as為它取了別名,或是賦值給了另乙個變數名

__dict__:包含了模組裡可用的屬性名-屬性的字典;也就是可以使用模組名.屬性名訪問的物件

__file__:包含了該模組的檔案路勁。需要注意的是內建的模組沒有這個屬性,訪問它會丟擲異常!

__bases__:父類物件的元祖;但不包含繼承樹更上層的其他類,比如父類的父類

python 初識物件導向

面向過程 優點是 極大的降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊 即可。缺點是 一套流水線或者流程就是用來解決乙個問題,牽一髮而動全身。應用場景 一旦完成基本很少改變的場景,著名的例子有linux核心,git,以及apache http server等物件導向 優點 解決了程式的擴充套件性...

python之初識物件導向

2 什麼是物件導向程式設計 1 面向過程的程式設計思想 1.1 程式設計思想的定義程式設計思想就是編寫程式的套路,與具體的技術點無關1.2 面向過程的定義及優缺點核心是過程二字,過程就是解決問題的步驟,也就是先幹什麼 再幹什麼 後幹什麼 過程的終極奧義就是將程式流程化 過程是 流水線 用來分步驟解決...

物件導向 初識物件導向

面向過程思想 步驟清晰簡單,第一步做什麼,第二步做什麼.面向過程適合處理一些較為簡單的問題 物件導向思想 物以類聚,分類的思維模式,思考問題首先會解決問題需要分哪些類,然後對這些類進行單獨思考,最後才是對某個分類下的細節進行面向過程的思索 物件導向適合處理複雜的問題,適合處理需要多人協作的問題 對於...