python基礎15 面像物件的程式設計

2022-04-10 15:57:59 字數 2128 閱讀 9233

物件導向的程式設計

一、物件導向的程式設計簡介

1、物件導向程式設計的由來。

我們之前雖然學習過了面向過程的程式,它的核心是面向過程,一步一步的設計好了的流程,雖然極大的降低了程式的複雜度,但是乙個設計

好了的流程只能滿足乙個程式後期的可擴充套件性差,所以為了解決面向過程的程式可擴充套件性差的缺點,產生了物件導向的程式。他是解決了

面向過程中可擴充套件性差的問題,如果程式需要擴充套件就可以對需要擴充套件的某個物件單獨進行修改,就會立刻反映到整個程式體系中,不需要

牽一髮而動全身。

注釋:像作業系統的開機流程,他就相當於乙個面向過程的程式,一步一步設計好了的,但是像我們玩的王者榮耀中的英雄人物,他們就是一

個物件導向的程式,因為某個英雄要新增新的技能時就可以在這個英雄的物件裡面新增。

2、物件導向程式的優缺點。

1.優點:解決了程式的可擴充套件性,對某一程式物件的單獨修改就可以立刻反應到整個體系中,一般應用於程式變動需求比較大的軟體中,比較

遊戲,人物

的特徵與技能都是物件導向程式大展身手的好地方。

2.缺點:可控性差,無法向面向過程的程式設計流水線式的可以很精準的**問題的處理流程與結果,物件導向的程式一旦開始就由物件之間的

互動解決問題,即便是上帝也無法**最終結果。於是我們經常看到乙個遊戲人某一引數的修改極有可能導致陰霸的技能出現,一刀砍死

3個人,這個遊戲就失去平衡。

二、類和物件

1、物件和類的定義

在英雄聯盟,每個玩家選乙個英雄,每個英雄都有自己的特徵和和技能,特徵即資料屬性,技能即方法屬性,特徵與技能的結合體就乙個物件。

在一組物件中,從他們的特性和技能中提取共有的內容就是類,類是相同特徵和技能的結合體。

2、python中物件和類的表示方式。

在python中,用變數表示特徵,用函式表示技能,因而類是變數與函式的結合體,物件是變數與方法(指向類的函式)的結合體

三、類簡介

1、建立乙個類。

class 類名:

'類的文件字串' #相當於定義了個變數(特性)也可以是字串,統稱為類的資料部分。

類體#相當於定義了個函式(技能),統稱為類的函式部分。

2、類的作用。

1.作用1是屬性引用(引用=增刪改查):

1.1引用類的資料屬性,該屬性與所有物件/例項共享。

格式為:類名.變數名(類中定義的變數的變數名)#可通過print(類名.變數名)來檢視相對應的值

1.2引用類的函式屬性,該屬性與所有物件/例項共享。

格式為:類名.函式(類中定義的函式)#可通過print(類名.函式)來檢視相對應的值

1.3刪除類的屬性

格式為 :del 類名.變數名(類中定義的函式)

1.4增加類的屬性

格式為 :類名.需要增加的變數名=『 字串』

2.作用2是例項化(__init__與self)

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

2.2.self的作用是在例項化時自動將物件/例項本身傳給__init__的第乙個引數,self可以是任意名字,但是瞎幾把寫別人就看不懂了。

3、檢視乙個類。

1.格式:dir(類名)#查出的是乙個名字列表

2.格式:類名.__dict__#查出的是乙個字典,key為屬性名,value為屬性值

四、物件簡介

1、物件是關於類而實際存在的乙個例子,先有類再有物件。

2、物件/例項只有一種作用:屬性引用

3、物件/例項本身只有資料屬性,但是python的class機制會將類的函式繫結到物件上,稱為物件的方法,或者叫繫結方法,繫結方法唯一繫結乙個物件

同乙個類的方法繫結到不同的物件上,屬於不同的方法,記憶體位址都不會一樣。

五、 類命名空間與物件/例項命名空間

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

2、類有兩種屬性:資料屬性和函式屬性其中類的資料屬性是共享給所有物件的而類的函式屬性是繫結到所有物件的:

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

在obj.name會先從obj自己的命名空間裡找

name,找不到則去類中找,類也找不到就找父類...最後都找不到就丟擲異常

JS 面像物件封裝

封裝的js頁面 封裝window面像物件方法,把裡面的東西變成全域性給window,給外界使用 function window 把window物件換成自定義的player物件 player.prototype say function player.prototype.init.prototype ...

面像物件略整理

function person name,age,job var person1 new person nicholas 29,software engineer var person2 new person greg 27,doctor console.log person1.sayname pe...

php的oop 面像對像

在php的論壇中總是聽到有人對php的oop支援說三道四的,說這有缺陷,那裡不足,但是都拿不出實際的例子。原來說過要和大家說說這事,但是一直很忙,現在算是抽了些時間了,所以把我剛剛做過的乙個專案的框架拿出來和大家 一下。這個專案99 的 是用oop方式編寫的,感覺php對於oop支援非常好,不是一般...