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...