輪物件的重要性
物件導向程式設計:
oop程式設計,模板和實際的物件來建立各種模型
class類:
就是模板
先寫乙個模板的原因是,後面會建立多個人,只是想傳幾個引數來建立多個人。這樣大多數功能就不需要重寫了。
類,就是對類擁有相同屬性的物件的抽象,藍圖,原型。
每個物件可以有不同的屬性。
手把手教你寫乙個簡單的類
#!/usr/bin/env python列印結果# -*- coding:utf-8 -*-# author: leon xie
#類名,這個是必寫的定義,簡單的定義
#就像定義了乙個函式,只是定義了它,不呼叫它不生效
class dog(object
): # print(
"hello,i am a dog.")
#例項化完了以後,單獨寫乙個功能,功能寫在巢狀裡面
def sayhi(self):
print(
"hello,i am a dog.")
#類是乙個模板,寫了乙個模板,要把它例項化
d =dog()
#記憶體物件有了,但是我沒呼叫
#print(d)
#呼叫d.sayhi()
hello,i am a dog.說明:
#!/usr/bin/env python類的特性# -*- coding:utf-8 -*-# author: leon xie
#類名,這個是必寫的定義,簡單的定義
#就像定義了乙個函式,只是定義了它,不呼叫它不生效
class dog(object
): # print(
"hello,i am a dog.")
def __init__(self,name): #建構函式,構造方法 ==初始化方法
self.name =name
#例項化完了以後,單獨寫乙個功能,功能寫在巢狀裡面
def sayhi(self): #類的方法
#類通過函式平起來的,例項化吧lichuang傳給了init,但是我
#這個地方調不到上面的函式
print(
"hello,i am a dog.my name is
",self.name)
def eat(self,food):
print(
"%s is eating %s
" %(self.name.food))
#類是乙個模板,寫了乙個模板,要把它例項化
d = dog("
lichuang")
#記憶體物件有了,但是我沒呼叫
#print(d)
d2 =dog("
chuang2")
#呼叫d.sayhi()
d2.sayhi()
#我無法區分是哪條狗,所以要傳點引數區分
#類是一堆函式的組合,打通函式見甭能互相呼叫的問題
#沒例項化,上面定義的類是存在的,以模板形式
#例項化後的物件我們叫做例項,當前類的例項
#self就是實力本身,
封裝防止資料被隨意修改。
使外部程式不需要關注物件內部的構造,只需要通過物件對外提供的介面進行直接訪問即可。
繼承通過父類- 》子類的方式實現 不同角色的共同點和不同點
開發中避免寫重複的**,否則就相當於給自己挖坑。
函式的出現,就幫我們解決了重複**的問題。
其實oop程式設計的主要作用也是
1、**量少了一半
2、角色和它所具有的功能一目了然
#!/usr/bin/env pythonself相當於d,d就是例項化後的物件,例項化後產生的物件,叫做例項。當前類的例項。# -*- coding: utf-8 -*-#author: leon xie
class dog(object
): def __init__(self,name): #建構函式,構造方法 ==初始化方法
self.name =name
def sayhi(self): #類的方法 ,寫self原因是把例項本身傳進來
print(
"hello,i am a dog.my name is
",self.name)
'''先例項化,然後在呼叫功能
'''d = dog("
alex")
d2 = dog("
lichuang")
d.sayhi()
d2.sayhi()
列印結果
hello,i am a dog.my name
isalex
hello,i am a dog.my name
is lichuang
self就是d,所以self就是例項本身,你生成哪個物件self就是誰
模板如下:
繼承通過父類->子類的方式以最小**量的方式實現不同的角色
物件導向的特性:
封裝類==>例項化==》例項物件
__init__建構函式
self.name = name #屬性,成員變數
def sayhi() #方法,動態屬性
共有屬性和私有屬性
__private_attr_name = value
只能內部訪問,外部不能訪問
def get_heart(self): #對外部提供唯讀訪問介面
return self.__heart
強制訪問
r1._role__heart 強制訪問私有屬性
公有屬性指所有屬於我這個類的物件都可以訪問
有多少個物件例項化了我都可以訪問的屬性
在類裡直接定義的就是共有屬性
繼承當同一類的物件,有共同屬性,又有不同屬性的時候,搞乙個分類,搞2個子類分別繼承。
oo開發正規化大致為:
劃分物件--> 抽象類-->將類組織成為層次化結構(繼承和合成)
接下來需要明白的幾個問題:
1、什麼是物件導向程式設計?
用類和物件來實現功能、
以前都寫成乙個函式,賦予這個函式功能,它幫我完成
2、什麼是類,什麼是物件,又有什麼關係?
class 類:
def 函式1():
pass
def 函式2():
pass
#obj是物件,例項化的過程
obj = 類()
obj.函式1()
有時候,函式程式設計能實現?比較麻煩,用物件導向非常的簡單能實現。
3、什麼時候適用物件導向?
- 如果多個函式需傳入多個共用的引數時
- 根據乙個模板建立某些東西
- 應用場景:
4、self 就是呼叫當前方法的物件
classfoo:
def __init__(self,name):self.name = name
def bar(self):靜態欄位的使用場景,每個物件中儲存相同的東西的時候,可以使用靜態字段。pass
obj1 =foo()
obj1.bar()
obj2 =foo()
obj2.bar()
5、封裝?
相當於建立了容器,容器用來裝東西,比喻成記憶體裡的一塊位址,我把一堆東西放在類裡面。
可以說成:類中封裝了字段和方法
物件中封裝了普通欄位的值
6、字段:
普通字段(儲存在物件中)
靜態字段(儲存在類中)
方法:普通方法(儲存在類中,呼叫者物件)
靜態方法(儲存在類中,呼叫者類(無需建立物件),可以有任意個引數)
乙個初學者的RHCE之路
乙個初學者的rhce之路 1 認清你的考試目的,rhce對於初學者來說是很難的,所以我不建議沒有準備好就報考rhce,雖然我也是如此。因為此考試通過率底,靈活性大,我見過的從事linux工作的 十分牛x的人物,考兩次都沒有通過的。所以一定要明確你自己的目的,是要從事linux工作,尤其是linux網...
乙個面向初學者的Python編輯器Mu
mu乙個開源編輯器,是滿足學生可以輕鬆學習編寫python 的工具。作為初學程式設計師的python編輯器,旨在使學習體驗更加愉快。它使學生能夠在早期體驗python的程式設計,而這對於初學者學習新知識的很重要。如果你曾試圖教年輕人如何程式設計,你會立即掌握mu的重要性。大多數程式設計工具都是由開發...
寫給Git初學者的7個建議
英文原文 7 useful git tips for beginners 當我剛剛開始使用 git 的版本控制時,我根本不確定我付出那麼多時間是不是會得到回報。branch stage stash,這些 git 名詞對我來說都非常陌生。而今天的我已不能想象生活沒有 git 會變成什麼樣。git 不僅...