初識python物件導向程式設計(1)複習

2021-09-22 22:31:31 字數 2384 閱讀 5092

物件導向程式設計概述01

部分細節就不再過多的描述了,主要記一些不太懂的或者記憶模糊的地方

物件分為兩種:

例項物件由類物件建立出來,類物件就是生成例項物件的模板。

1,oop的大體步驟:

抽象出類物件

抽象出類物件的屬性

抽象出類物件的行為(方法)

根據類物件建立例項

通過例項物件訪問屬性和方法

行為(方法)是類中特殊的函式;類屬性就如下面所說,分為類屬性和例項屬性

1:屬性

盡量把需要使用者傳入的屬性作為例項屬性,而把同類都一樣的屬性作為類屬性。例項屬性在每建立乙個例項時都會初始化一邊,不同例項的例項屬性可能不同,但是例項的類屬性都相同。

一:例項屬性

初始化最好在__init__(self,...)中,

內部呼叫都要加上self.

外部呼叫時用instancename(例項名).propertyname(屬性名)

內外部時相較於類物件而已

二:類屬性

在__init__()外初始化

在內部用classname.類屬性名呼叫

在外部既可以用classname.類屬性名又可以用instancename.例項屬性名來呼叫。

三:私有屬性

單下劃線_開頭:只是告訴別人這是私有屬性,外部仍然可以訪問更改

2.     雙下劃線__開頭:外部不可以通過instacename.propertyname來訪問或者更改實際上將其轉化為了_classname__propertyname(有待理解)

2:方法

1): 普通類方法:

def fun_name(self,...):

pass

外部例項呼叫

2):靜態方法:@staticmethod

不能訪問例項屬性!!!

引數不能傳入self!!!

與類相關但是不依賴類與例項的方法(需要進一步明確)

3):類方法:@classmethod

不能訪問例項屬性!!!

引數必須傳入cls!!!

必須傳入cls引數(即代表了此類物件——區別——self代表例項物件),並且用此來呼叫類屬性:cls.類屬性名

*@staticmethod與類方法都可以通過類或例項來呼叫。其兩個的特點都是不能呼叫例項屬性

簡單總結:類屬性和類方法時類固有的方法和屬性,不會因為例項不同而改變。

繼續:

類方法是類中特殊的函式,與普通函式的區別;

定義方法時,方法的第乙個形參表示呼叫該方法的實力物件,第乙個形參的名稱通常時self,也可以時其他名稱/

呼叫方法時,系統自動將呼叫該方法的例項物件作為實參傳遞給第乙個形參。第1個實參傳遞給第2個形參,依此類推。

2.例項屬性

繫結例項物件屬性的方式有兩種:

1.在類物件的內部:推薦在__init__方法中繫結,

self.屬性名 = 屬性值

2.在類物件外部

例項物件.屬性名 = 屬性值,若屬性已存在,就是對屬性進行修改

訪問例項屬性的兩種方式:

在類物件的內部:self.屬性名

在類物件的外部:例項物件.屬性名

例項物件.__dict__:

可以獲取該例項物件所繫結的所有屬性及其值的字典

3.類屬性

類屬性指的是類物件所繫結的屬性

繫結類屬性(給類物件繫結屬性)的方式有兩種:

在類物件內部,但在方法之外:propertyname = propertyvalue

因為python是動態語言,所以可以在類外部動態的繫結屬性,若屬性已經存在就是對屬性值進行更改:classname.propertyname  = propertyvalue

訪問類屬性的方式也有兩種:

在類物件的內部(方法中) : classname.propertyname

在類物件的外部:classname.propertyname 或者 instancename.propertyname

因為類物件的所有例項物件都有乙個指向類物件的指標,所以,類物件的所有例項物件也都可以訪問類屬性。

之所以新增'classname',是為了表明類屬性被哪個類物件所繫結。

因為類屬性可以通過classname.propertyname和instancename.propertyname來訪問。當通過instacename.propertyname訪問時,若指定例項物件中沒有指定名稱的例項屬性,就會通過classname.propertyname來查詢。所以當通過『例項物件.屬性名』的方式訪問屬性時,如果例項屬性和類屬性同名就會遮蔽類屬性。

通過『例項屬性.屬性名 = 屬性值'的方式繫結屬性時,這裡的屬性只表示例項屬性(因為類屬性沒有這樣的繫結方式),若已繫結就會更改屬性值。

初識物件導向1

聽說物件導向很難很複雜的樣子?其實並不難,慢慢由淺入深理解就好了。下面我來說說我對物件導向的認識吧!比如說我們要做一道菜,那麼步驟應該是 1.買菜 去哪買?買多少?買什麼?2.洗菜切菜 怎麼切?片?條?塊?3.面向過程 關注的是具體實現的過程 物件導向 關注的是特徵 具有的特性 注意 物件導向不是沒...

python物件導向程式設計1

物件導向程式設計 物件導向程式設計 object oriented programming,簡稱oop,是一種程式設計思想。oop把物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。為了簡化程式設計,面向過程把函式繼續...

python 初識物件導向

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