tft每日頭條

 > 生活

 > pythonpip開發環境

pythonpip開發環境

生活 更新时间:2024-11-19 17:20:33

Python從入門到編寫POC系列文章是i春秋論壇作家「Exp1ore」表哥原創的一套完整教程,想系統學習Python技能的小夥伴,不要錯過哦!

pythonpip開發環境(幹貨分享Python從入門到編寫POC之初識OOP和類)1

1、初識OOP和類

面向對象編程——Object Oriented Programming,簡稱OOP,是一種程序設計思想。OOP把對象作為程序的基本單元,一個對象包含了數據和操作數據的函數。

面向過程的程序設計把計算機程序視為一系列的命令集合,即一組函數的順序執行。為了簡化程序設計,面向過程把函數繼續切分為子函數,即把大塊函數通過切割成小塊函數來降低系統的複雜度。

而面向對象的程序設計把計算機程序視為一組對象的集合,而每個對象都可以接收其他對象發過來的消息,并處理這些消息,計算機程序的執行就是一系列消息在各個對象之間傳遞。

在Python中,所有數據類型都可以視為對象,當然也可以自定義對象。自定義的對象數據類型就是面向對象中的類(Class)的概念。

pythonpip開發環境(幹貨分享Python從入門到編寫POC之初識OOP和類)2

類(Class)是面向對象程序設計(OOP,Object-Oriented Programming)實現信息封裝的基礎。類是一種用戶定義類型,也稱類類型。每個類包含數據說明和一組操作數據或傳遞消息的函數。類的實例稱為對象。

2、新式類與舊式類

先看一下二者的區别,首先是舊式類,舊式類又稱為經典類。

>>> class demo1:pass

這樣就定義了一個很簡單的舊式類,将它實例化:

>>> DEMO1 = demo1()

>>> type(demo1) <type 'classobj'> >>> DEMO1.__class__<class __main__.demo1 at 0x036FEDF8>>>> type(DEMO1)<type 'instance'>

有人可能會問DEMO1.__class__是什麼意思?

DEMO1是一個instance(實例),也是一個對象,而每個對象都有一個__class__屬性,用來顯示它的類型,到了Python2.2以後,就有了新式類。

>>> class DEMO2(object): pass>>> demo2 = DEMO2()>>> demo2.__class__<class '__main__.DEMO2'>>>> type(demo2)<class'__main__.DEMO2'>

由此,新式類與舊式類的區别:

(1)舊式類,.__class__和type( )的類型不同,但是新式類是相同的;

(2)新式類要在類的名字後面跟上(object),這是一個繼承的類的操作,也是基本操作。

3、定義類

定義新式類的方法

第一種方法:

>>> class demo(object):pass

第二種方法:

>>> __metaclass__ = type>>> class DEMO:pass

4、創建類

寫一個簡單的例子:

#coding = utf-8__metaclass__ = typeclass students: def __init__(self,name): self.name = name

聲明建立了一個名為“students”的類,用縮進表示這個類的内容,有些人也會把類裡面的函數叫做“方法”。

PS:類中的函數的參數必須包括self參數,且默認作為第一個參數,繼續深入,def __init__是一個特殊的函數,叫做構造函數(初始化函數)。

這樣就意味着實例化時要給參數name提供一個值,作為類的初始化内容,同時,要通過name參數傳一個值,成為類和實例的一個屬性。

>>> demo = students('BaZong')>>> print demo.nameBaZong

pythonpip開發環境(幹貨分享Python從入門到編寫POC之初識OOP和類)3

這樣就确定了這個類的基本屬性,加深理解一下:

# -*- coding: UTF-8 -*-__metaclass__ = typeclass students: def __init__(self,name): self.name = name def Name(self): return self.namestudent = students('MOMO') #将它實例化name = student.Name() #調用函數print 'This student is my goddess ------',nameprint student.name #實例的屬性

運行一下:

pythonpip開發環境(幹貨分享Python從入門到編寫POC之初識OOP和類)4

為何self有時必須用,有時卻不需要?

其實,self不用非得寫成self,寫成其它的也可以,這隻是約定俗稱吧。

總而言之:

(2)self的名字并不是規定死的,但是最好還是按照約定是用self;

(3)self總是指調用時的類的實例。

5、繼承

“繼承”是面向對象軟件技術當中的一個概念。如果一個類A繼承自另一個類B,就把這個A稱為"B的子類",而把B稱為"A的父類"。繼承可以使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的代碼。

在令子類繼承父類的同時,可以重新定義某些屬性,并重寫某些方法,即覆蓋父類的原有屬性和方法,使其獲得與父類不同的功能。另外,為子類追加新的屬性和方法也是常見的做法。

先舉一個簡單例子:

# -*- coding: UTF-8 -*-__metaclass__ = typeclass students: def speak(self): print "Hello momo" def height(self): print "MOMO's height is 1.70m"class goddess(students): def height(self): print "MOMO's height is 1.80m"if __name__ == '__main__': demo = goddess() demo.height() demo.speak()

pythonpip開發環境(幹貨分享Python從入門到編寫POC之初識OOP和類)5

這就是繼承。有個小疑問,為啥是1.80m不是1.7m呢?

因為繼承了students,所以goddess這個類就有了students的所有函數(方法)和屬性,但是如果有同樣的名稱方法(函數),那麼就會顯示goddess中的方法,這叫做方法重寫。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved