介面測試學習-python第七課(物件導向編程)

來源:互聯網
上載者:User

標籤:就是   私人化   passwd   執行個體變數   __init__   python   私人   class   ica   

以前都是面向過程編程,做一件事是按順序來的,必須經過很多操作。現在是物件導向編程,將各種操作集合在一起,然後指揮其適用於多個情境。
上課時老師舉了一個蠻貼切的例子,比如買車,面向過程就是先去學車,然後去4s店買車,然後去辦證,然後保險,然後臨時牌照,然後正式牌照。物件導向就像將這些所有步驟會經曆的情境整合起來,直接開一個車輛
購置辦證中心,然後從學車到辦證甚至以後的繳納罰款全都在這裡處理。
在我的理解,物件導向就是給一些有共同性的事物先造一個模型,這個模型有這些事物共同的屬性,也有這些事物共同的處理方法。然後一旦需要針對某個事物單獨操作時,只要調用
這個模型,這個事物就可以根據已經配好的屬性和方法很快的建造起來。
物件導向編程有幾個基礎的點,分別是類、建構函式、屬性、方法、執行個體化。細化分還有類變數、執行個體變數、類方法、執行個體方法、解構函式、私人化、繼承等等。
1、類
類是利用class定義的,如num1和num2,這兩者的區別是類num2後面的括弧裡有“object”,前者被稱為經典類,後者被稱為新式類。沒有很大的區別。
1 class num1():  2     pass3 4 class num2(object):5     pass

2、屬性

屬性其實就是變數,包括類變數(直接在類中定義的變數)和執行個體變數(在“def __init__(self):”下定義的變數)。

比如一個班有很多個學生,都生活在成都,學生們的年級、班級和年齡假設都是一樣的,那麼這些就是學生的共同屬性,可以用變數先定義。

1 class Students():2     county = ‘China‘  # 類變數,公開變數,每個執行個體都能用,可以節省記憶體3     def __init__(self):4         self.class = ‘高三二班‘  # 執行個體變數5         self.age = 18

3、方法

如果我們要列印這個班學生的姓名、班級和年齡。那麼就得創造一個方法,也是一個函數。比如下面的print_info函數,就可以列印出每個對象的姓名、班級和年齡。

 1  class Students(): 2      county = ‘China‘  # 類變數,公開變數,每個執行個體都能用,可以節省記憶體 3      def __init__(self, name): 4           self.class = ‘高三二班‘  # 執行個體變數 5           self.age = 18 6             self.name = name 7   8      def print_info(self): 9          print(‘學生的姓名是%s‘ % self.name)10          print(‘學生的班級是%s‘ % self.class)11          print(‘學生的年齡是%s‘ % self.age)

4、執行個體化

每一個類都是必須執行個體化才能使用的,不能那種車輛模型開車上路對吧,還是要有一輛真正的車才行。執行個體化就相當於對比著自己喜歡的模型得到一個真實的物品,這個物品是根據模型對比購買的,所以它擁有和模型同樣的顏色、模樣等等。所以執行個體化的對象是擁有類裡面的屬性和方法的。

 1  class Students(): 2      county = ‘China‘  # 類變數,公開變數,每個執行個體都能用,可以節省記憶體 3      def __init__(self, name): 4           self.class = ‘高三二班‘  # 執行個體變數 5           self.age = 18 6           self.name = name 7   8      def print_info(self): 9          print(‘學生的姓名是%s‘ % self.name)10          print(‘學生的班級是%s‘ % self.class)11          print(‘學生的年齡是%s‘ % self.age)12 13 zxm = Student(name = ‘張曉明‘)  # 執行個體化14 print(zxm.class)  # 輸出結果為1815 zxm.print_info()  # 會列印zxm這個對象的姓名、班級、年齡

5、建構函式和解構函式

建構函式就是類執行個體化時啟動並執行函數,解構函式就是銷毀執行個體化對象的函數。一般串連資料庫後需要關閉資料庫,這裡可以將關閉資料庫的代碼放在解構函式中,這樣執行完畢後自動銷毀執行個體同時自動關閉連結。

 1 class MyDb(object): 2     # 解構函式 3     def __del__(self): 4         self.cur.close() 5         self.coon.close() 6         print(‘over....‘) 7     # 建構函式 8     def __init__(self, 9                  host,user,passwd,db,10                  port=3306,charset=‘utf8‘):11         try:12             self.coon = pymysql.connect(13                 host=host,user=user,passwd=passwd,14                 port=port,db=db,charset=charset,15                 autocommit=True  # 自動認可,在非select語句時可以不需要再commit了16             )17         except Exception as e:18             print(‘資料庫連結失敗!%s‘ % e)19         else:20             self.cur = self.coon.cursor(cursor=pymysql.cursors.DictCursor)

6、私人

變數分私人變數和公有變數,顧名思義,私人變數就是只能在類裡面調用的不可修改的變數,而公有變數是在類外對象也可以調用修改的變數。私人變數的定義方法就是在變數名前面加兩個底線。

 1 import redis 2 class My(object): 3     def __init__(self): 4         self.__host = ‘***.*.**.**‘  # 私人變數 5         self.__port = 6379 6         self.__password = ‘*******‘ 7  8         self.r = redis.Redis(host=self.host,port=self.port,password=self.password) 9 10     def get(self, k):11         res = self.r.get(k)12         if res:13             return res.decode()14         return None
1 my = My()  #執行個體化2 my.port = 9999  # port是私人變數無法修改3 print(my.__host)  # host是私人變數,無法在類外調用4 my.__close()  # close是私人方法,無法在類外調用

7、繼承

定義新式類時括弧中一般會寫“object”,其實這就是定義的類繼承了object類。所以寫在括弧中的類就是定義的類所要繼承的類。被繼承的類可以成為父類或者基類,新的類成為子類。子類可以繼承父類的所有屬性和方法,並可以定義自己的屬性和方法且不會影響父類。

比如下面,定義了一個串連資料庫的基礎類,這個類有一些屬性如host、port、password等等。而不論串連mysql資料庫或者redis資料庫都會用到這些屬性。那麼定義MySQL類和redis類時就可以直接繼承Base類,這樣host、port、password這些屬性就可以直接使用了。

 1 class Base(object): 2     def __init__(self, host, port, password): 3         self.host = host 4         self.port = port 5         self.password = password 6  7  8 class Mysql(Base): 9     pass10 11 12 class Redis(Base):13     pass

 

 

 



介面測試學習-python第七課(物件導向編程)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.