Python物件導向

2021-09-19 09:11:56 字數 4274 閱讀 9292

python是一門物件導向的語言,在python中一切都是物件,函式是物件,型別也是物件

簡單說明物件導向和面向過程的區別

類的成員,成員修飾符,類的特殊成員

這點不做過多的贅述,主要了解一下物件導向的優勢。

類的成員,成員修飾符,類的特殊成員

1.類的成員

方法 屬性

1.欄位

普通字段屬於物件,靜態字段屬於類:

class

province

:# 靜態字段

country = '中國'

def__init__

(self, name)

:# 普通字段

self.name = name

# 直接訪問普通字段

obj = province(

'河北省'

)print obj.name

# 直接訪問靜態字段

province.country

值得注意的是,類佔乙份記憶體,而每個例項(物件)單獨佔乙份記憶體。同時,靜態欄位只會於類中儲存乙份,而普通字段每個物件都要儲存乙份。

2.方法

方法包括:普通方法、靜態方法和類方法,三種方法在記憶體中都歸屬於類,區別在於呼叫方式不同。

class

foo:

def__init__

(self, name)

: self.name = name

deford_func

(self)

:""" 定義普通方法,至少有乙個self引數 """

# print self.name

print

'普通方法'

@classmethod

defclass_func

(cls)

:""" 定義類方法,至少有乙個cls引數 """

print

'類方法'

@staticmethod

defstatic_func()

:""" 定義靜態方法 ,無缺省引數"""

print

'靜態方法'

# 呼叫普通方法

f = foo(

)f.ord_func(

)# 呼叫類方法

foo.class_func(

)# 呼叫靜態方法

foo.static_func(

)

3.屬性

屬性就是普通方法的變種。

對於屬性,有以下三個知識點:

由屬性的定義和呼叫需要注意的是:

# ############### 定義 ###############

class

foo:

deffunc

(self)

:pass

# 定義屬性

@property

defprop

(self)

:pass

# ############### 呼叫 ###############

foo_obj = foo()

foo_obj.func(

)foo_obj.prop #呼叫屬性

注意:屬性存在意義是:訪問屬性時可以製造出和訪問字段完全相同的假象

屬性由方法變種而來,如果python中沒有屬性,方法完全可以代替其功能。

例項:對於主機列表頁面,每次請求不可能把資料庫中的所有內容都顯示到頁面上,而是通過分頁的功能區域性顯示,所以在向資料庫中請求資料時就要顯示的指定獲取從第m條到第n條的所有資料(即:limit m,n),這個分頁的功能包括:

根據使用者請求的當前頁和總資料條數計算出 m 和 n

根據m 和 n 去資料庫中請求資料

# ############### 定義 ###############

class

pager

:def

__init__

(self, current_page)

:# 使用者當前請求的頁碼(第一頁、第二頁...)

self.current_page = current_page

# 每頁預設顯示10條資料

self.per_items =

10 @property

defstart

(self)

: val =

(self.current_page -1)

* self.per_items

return val

@property

defend

(self)

: val = self.current_page * self.per_items

return val

# ############### 呼叫 ###############

p = pager(1)

p.start 就是起始值,即:m

p.end 就是結束值,即:n

屬性的兩種定義方式

屬性的定義有兩種方式:

這裡順便提一句python中的新式類和經典類

新式類繼承object,屬性更豐富

區別為新式類的繼承關係是廣度優先,而經典類是深度優先。

classa:

#經典類

pass

class

b(object)

:# 新式類

pass

直接上新式類的@property裝飾器

# ############### 定義 ###############

class

goods

(object):

def__init__

(self)

:# 原價

self.original_price =

100# 折扣

self.discount =

0.8 @property

defprice

(self)

:# 實際** = 原價 * 折扣

new_price = self.original_price * self.discount

return new_price

@price.setter

defprice

(self, value)

: self.original_price = value

@price.deleter

defprice

(self)

:del self.original_price

obj = goods(

)obj.price # 獲取商品**

obj.price =

200# 修改商品原價

del obj.price # 刪除商品原價

靜態字段方式,建立值為property物件的靜態字段

class

goods

(object):

def__init__

(self)

:# 原價

self.original_price =

100# 折扣

self.discount =

0.8def

get_price

(self)

:# 實際** = 原價 * 折扣

new_price = self.original_price * self.discount

return new_price

defset_price

(self, value)

: self.original_price = value

defdel_price

(self)

:del self.original_price

price =

property

(get_price, set_price, del_price,

'**屬性描述...'

)obj = goods(

)obj.price # 獲取商品**

obj.price =

200# 修改商品原價

del obj.price # 刪除商品原價

python物件導向學習 python物件導向學習

物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。物件導向三個概念 1.封裝 即把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法讓可信的類進...

python物件導向總結 Python物件導向總結

python 物件導向 oop 1 物件導向 是乙個更大封裝,把乙個物件封裝多個方法 2 類 是對一些具有相同特徵或行為的事物的乙個統稱,是抽象的,不能直接使用 特徵被稱為屬性 行為被稱為方法 3 物件 是由類建立出來的乙個具體的存在,可以直接使用 先有類再有物件,類只有乙個,而物件可以有多個 類中...

python登入物件導向 python 物件導向

一 屬性和方法 1.a a 例項屬性 通過例項物件來新增的屬性就是例項屬性 a.count 10 例項方法都是在類中直接定義的 以self為第乙個引數的方法都是例項方法 當通過例項物件呼叫時,會自動傳遞當前物件作為self傳入 當通過類物件呼叫時,不會自動傳遞self a.test 等價於 a.te...