python程序設計——面向對象程序設計:類

理解面向對象python

基本原則是,計算機程序由多個可以起到子程序做用的單元或對象組合而成app

關鍵性觀念是,數據以及對數據的操做封裝在一塊兒,組成一個相互依存、不可分割的總體,即對象函數

python面向對象特性測試

徹底支持面向對象的基本功能,如封裝、繼承、多態以及基類方法的覆蓋或重寫ui

python中,對象的概念很普遍,一切內容均可以稱爲對象this

建立類時用變量形式表示的對象屬性稱爲數據成員成員屬性spa

用函數形式表示的對象行爲稱爲成員函數成員方法code

1、類對象

1.類的定義與使用blog

# 定義類 class Car: def info(self): print("this is a car") # 使用類實例化對象 # 經過「對象.方法」訪問其中的數據成員或成員方法 car = Car() car.info() out: this is a car # 使用 isinstance測試某個對象是否爲某個類的實例 isinstance(car,Car) out: True # 關鍵字 pass,相似於空語句 # 佔位,預留函數空間 class Car: def info(self): print("this is a car") def color(self): pass

2.類成員與實例成員

實例屬性,通常指在構造函數__init__ 中定義的,定義和使用時必須以self作爲前綴

類屬性,在類中全部方法以外定義的數據成員

在主程序中(或類的外部),實例屬性屬於實例(對象),只能經過對象名訪問,

而類屬性屬於類,能夠經過類名或對象名訪問

--------------------------------------------------------------------

在Python中,能夠動態地爲類和成員增長成員,體現了python的動態類型

--------------------------------------------------------------------

class Car: price = 10000 # 定義類屬性 def __init__(self,c): # 構造函數 self.color=c # 定義實例屬性  car1 = Car("red") car2 = Car("blue") print(car1.color,Car.price) Car.price = 11100 # 修改類屬性 Car.name = 'bird' # 增長類屬性 car1.color = "yellow" # 修改實例屬性 print(car2.color, Car.price, Car.name)

函數與方法有區別,方法通常指與特色實例綁定的函數

 1 # 動態爲對象增長成員方法  2 class Demo:  3 pass  4 t=Demo()  5 def test(self,v)  6 self.value = v  7  8 t.test = test # 增長成員方法 test  9 t.test(t,20) 10 11 print(t.value) 12 13 out: 14 20

3. 私有成員與共有成員

python並不提供對私有成員嚴格的訪問保護機制,

在定義類的屬性時,若是屬性名以兩個下劃線 __ 開頭,表示私有屬性

私有屬性在類的外部不能直接訪問,須要經過調用對象的公有成員方法來訪問

公有屬性能夠公開使用,既能夠在類的內部訪問,也能夠在外部程序中使用

----------------------------------------------------

使用下劃線做爲變量名和方法名前綴和後綴,表示類的特殊成員

_xxx 保護成員,只有類對象和子類對象才能訪問

__xxx__ 系統定義的特殊成員

__xxx 類中的私有成員

# 特殊成員定義與訪問 class Fruit: def __init__(self): self.__color='red' # 私有成員 self.__type__='rectangle' # 特殊成員 self.price = 1 # 公有成員  apple = Fruit() print(apple.price) # 對象公有數據成員的值  out: 1 apple.price = 2 # 修改對象公開數據成員的值 print(apple.price) out: 2 apple.__type__ = 'Triangle' # 修改特殊成員的值  print(apple.__type__) out: Triangle
相關文章
相關標籤/搜索