1. 程式人生 > >python學習第十五天

python學習第十五天

1.面向物件和麵向過程

面向過程: 以我為中心. 按照事物的發展"流程".

面向物件: 以物件為中心.
萬事萬物皆為物件(object)

2.如何編寫面向物件程式(重點)

先建立類: 歸類. 對某些事物進行總結. 相當於圖紙

使用類可以建立物件:
class 類名(object)
def __init__(self, name, age): # 構造方法. 建立物件的時候自動呼叫這個方法
self.name = name
self.age = age

def 方法名(self, 引數);
方法體(return)
建立物件:
變數(引用, 控制代碼) = 類名(引數)
# 訪問物件的屬性資訊
物件.屬性
# 方法的訪問:
物件.方法()

練習:
# #Lol 類名,類是對事物的定義,歸類
# # 自己定義類時,類名首字母大寫
# class Lol():
# pass

# # 建立物件 : 變數 = 類()
# c1 = Lol() # 把類的概念進行例項化.通過類來建立物件
# c1.sheshou = '金克斯' # 屬性
# c1.zhongdan = '阿狸'
# c1.shangdan = '阿卡麗'
# c1.daye = '卡茲克'
# c1.fuzhu = '布隆'
# # . 的
# # 物件.屬性
# print(c1.shangdan)
# print(c1.daye)
# print(c1.zhongdan)
# print(c1.sheshou)
# print(c1.fuzhu)

# print('\n\n')

# c2 = Lol() # 把類的概念進行例項化.通過類來建立物件
# c2.sheshou = '老鼠' # 屬性
# c2.zhongdan = '風男'
# c2.shangdan = '鱷魚'
# c2.daye = '皇子'
# c2.fuzhu = '莫甘娜'
# print(c2.shangdan)
# print(c2.daye)
# print(c2.zhongdan)
# print(c2.sheshou)
# print(c2.fuzhu)



# class Lol():
# # 構造方法。在建立的物件的時候由系統自動訪問這個方法
# # self : 自身,自己 類的物件。當前正在建立的物件
# def __init__(self, shangdan, daye, zhongdan, sheshou, fuzhu): # 誰在呼叫,self就是誰,self由python自動傳遞
# self.shangdan = shangdan
# self.daye = daye
# self.zhongdan = zhongdan
# self.sheshou = sheshou
# self.fuzhu = fuzhu
# c3 = Lol('狗頭','夢靨','澤拉斯','奧巴馬','錘石')
# print(c3.shangdan,end='\t\t')
# print(c3.daye,end='\t\t')
# print(c3.zhongdan,end='\t\t')
# print(c3.sheshou,end='\t\t')
# print(c3.fuzhu)
# print('*********************VS*********************')
# c4 = Lol('瑞文','盲僧','卡特琳娜','Vn','巨魔')
# print(c4.shangdan,end='\t\t')
# print(c4.daye,end='\t\t')
# print(c4.zhongdan,end='\t\t')
# print(c4.sheshou,end='\t\t\t')
# print(c4.fuzhu)



# class Lol():
# # 構造方法。在建立的物件的時候由系統自動訪問這個方法
# # self : 自身,自己 類的物件。當前正在建立的物件
# def __init__(self, shangdan, daye, zhongdan, sheshou, fuzhu): # 誰在呼叫,self就是誰,self由python自動傳遞
# self.shangdan = shangdan
# self.daye = daye
# self.zhongdan = zhongdan
# self.sheshou = sheshou
# self.fuzhu = fuzhu
# # 方法.該型別的物件能夠執行哪些操作
# def youxi(self, game): # 誰呼叫這個方法,self 就是誰
# # 我要用game中的self.shangdan打上路
# print('我要玩%s' % game)
# c4 = Lol('瑞文','盲僧','卡特琳娜','Vn','巨魔')
# c4.youxi('LOL')


對比面向物件和麵向過程:
看需求.
大型專案更適合用面向物件
小型指令碼程式更適合面向過程

3.面向物件的三大特徵:封裝,繼承,多型
對屬性封裝
self.xxx = xxxx
對方法封裝

繼承:子類自動擁有父類中除了私有內容以外的其他所有內容

子類在父類的基礎上擴充套件了一些功能,(派生)
class Foo:
def a(self):
pass
def c(self):
pass
class bar(Foo):
def d(self):
pass
b = bar()
b.a()
b.c()
b.d()

多型:同一個物件,擁有多種形態, Java\c++