1. 程式人生 > 其它 >獨家專訪騰訊雲CTO王慧星:雲技術變革上下二十年

獨家專訪騰訊雲CTO王慧星:雲技術變革上下二十年

匯入
——Python面向物件基礎
Python從設計之初就已經是一門面向物件的語言,正因為如此,在Python中建立一個類和物件是很容易的。本章節我們將詳細介紹Python的面向物件程式設計。

面向物件介紹
面向過程:根據業務邏輯從上到下寫程式碼
函式式:將某功能程式碼封裝到函式中,日後便無需重複編寫,僅呼叫函式即可
面向物件程式設計:將資料與函式繫結到一起,進行封裝,這樣能夠更快速的開發程式,減少了重複程式碼的重寫過程

面向過程程式設計與函數語言程式設計對比
面向過程的關注點是: 怎麼做
面向物件的關注點是: 誰來做
面向物件:按人們認識客觀世界的系統思維方式,採用基於物件(實體) 的概念建立模型,模擬客觀世界分析、設 計、實現軟體的辦法。
面向物件程式設計**(Object Oriented Programming-OOP)**是一種解決軟體複用的設計和程式設計方法。這種方法把軟體系統中相近相似的操作邏輯和操作 應用資料、狀態,以類的形式描述出來,以物件例項的形式在軟體系統中複用,以達到提高軟體開發效率的作用。

類和物件的概念
類和物件是面向物件程式設計中重要的概念
類就是一個模板,模板裡可以包含多個函式,函式裡實現一些功能
物件則是根據模板建立的例項,通過例項物件可以執行類中的函式

類的組成部分
類(Class)由3個部分構成
類的名稱: 類名
類的屬性: 一組資料
類的方法: 允許對進行操作的方法 (行為)
例如:建立一個人類
事物名稱(類名):人(Person)
屬性:身高(height)、年齡(age)
方法:吃(eat),跑(run)…
定義類和物件
建立類

class Person(object):
    name='小明'
    age=18
    def eat(self):
        print
('吃飯')

建立物件
物件名=類名()
例子

class Person(object):
    name='小明'
    age=18
    def eat(self):
        print('吃飯')
    def run(self):
        print('跑步')

xm =Person() # 建立物件
xm.eat() # 呼叫方法
print('{}的年齡是:{}'.format(xm.name,xm.age))  # 訪問類屬性

---------------------------------輸出結果-------------------------------

吃飯
小明的年齡是:18

例項方法
在類的內部,使用 def 關鍵字可以定義一個例項方法,與一般函式定義不同,類方法必須包含引數 self,且為第一個引數
例項方法與屬性
類裡面定義的變數。定義在類裡面,方法外面的屬性稱之為類屬性,定義在方法裡面使用self引用的屬性稱之為例項屬性

class Animal(object):
    colour='白色'   # 類屬性
    def __int__(self):
        self.name='旺財'   #例項屬性
        '''
        例項方法,使用def關鍵字定義,第一個形參預設傳例項物件本身
        一般使用self作為第一個引數
        '''
    def test(self):
        print('我是例項方法')
    def show(self):
        print('Animal.show')

__init__方法
建立一個Animal類,並例項化一個dog物件和cat物件。
init(self) 方法,初始化方法,例項化物件的時候自動呼叫,完成一些初始化設定。
如果init方法裡面的屬性固定了,每個類創建出來的物件屬性都一樣,這個時候我們是不是考慮將屬性當引數在例項化物件的時候傳進去,讓類更通用

class Animal(object):
    def eat(self):
        print('喜歡吃肉')
dog=Animal()  #建立一個物件
dog.colour='red'  #新增屬性
dog.name='旺財'  #新增屬性
dog.age='2歲'
dog.eat()
print(dog.name,dog.colour,dog.age)

cat=Animal()  #建立一個物件
cat.colour='black'  #新增屬性
cat.name='妞妞'  #新增屬性
print(cat.name,cat.colour)

print('----------------改進-------------------')
class Animal(object):
    def __init__(self):
        self.name='旺財'
        self.colour='red'
        self.age='2歲'
    def eat(self):
        print('喜歡吃肉')
dog=Animal()  #在建立新物件的時候是自動執行的
print(dog.name)
dog.name='發財'  #新增屬性
dog.age='2歲'
dog.eat()
print(dog.name,dog.colour,dog.age)

print('----------------改進2-------------------')
class Animal(object):
    def __init__(self,name,colour,age):
        self.name=name
        self.colour=colour
        self.age=age
    def  eat(self,food):
        print(self.name+'喜歡吃:'+food)
dog=Animal('旺財','black','2歲')
print(dog.name,dog.colour)
dog.eat('骨頭')
cat=Animal('小花','red','3歲')
print(cat.name,cat.colour,cat.age)
cat.eat('')
---------------------輸出結果--------------------------
吃飯
小明的年齡是:18
喜歡吃肉
旺財 red 2歲
妞妞 black
----------------改進-------------------
旺財
喜歡吃肉
發財 red 2歲
----------------改進2-------------------
旺財 black
旺財喜歡吃:骨頭
小花 red 3歲
小花喜歡吃:魚

理解self
self和物件指向同一個記憶體地址,可以認為self就是物件的引用。

class Person:
    '''
    定義類
    '''
    def eat(self):
        '''
        例項方法
        :return:
        '''
        print('self={}'.format(id(self)))
        pass
    pass
xw=Person()
print('self=%s'%id(xw))
xw.eat()
-----------------執行結果---------------------
self=1809163727296
self=1809163727296

self傳參問題

所謂的self,可以理解為物件自己,某個物件呼叫其方法時,python直譯器會把這個物件作為第一個引數傳遞給self,所以開發者只需要傳遞後面的引數即可。

print('------------------新增引數--------------------')
class Person:
    '''
    定義類
    '''
    def eat(self,name,food):
        '''
        例項方法
        :return:
        '''
        print('%s 喜歡吃 %s'%(name,food))
        pass
    pass
xw=Person()
print('self=%s'%id(xw))
xw.eat('小王','榴蓮')
-----------------輸出結果--------------------
self=2269762334784
小王 喜歡吃 榴蓮

魔術方法
在python中,有一些內建好的特定的方法,方法名是“xxx”,在進行特定的操作時會自動被呼叫,這些方法稱之為魔法方法。
下面介紹幾種常見的魔法方法。
__init__方法:初始化一個類,在建立例項物件為其賦值時使用。
__str__方法:在將物件轉換成字串 str(物件) 測試的時候,列印物件的資訊。
__new__方法:建立並返回一個例項物件,呼叫了一次,就會得到一個物件。
__class__方法:獲得已知物件的類 ( 物件.class)。
__del__方法:物件在程式執行結束後進行物件銷燬的時候呼叫這個方法,來釋放資源。

class Person:
    '''
    定義類
    '''
    def __init__(self,name,food):
        '''
        例項方法
        :return:
        '''
        self.name=name
        self.food=food
    def __str__(self):
        return  '%s 喜歡吃 %s'%(self.name,self.food)
    '''
    定義了__str__方法,在列印物件的時候,會執行__str__方法。__str__方法只能return一個字串。
    '''
    pass
xw=Person('小王','榴蓮')
print(xw)
-----------------輸出結果-------------------------
小王 喜歡吃 榴蓮

類和物件的概念
類就是一個模板,模板裡可以包含多個函式,函式裡實現一些功能;
物件則是根據模板建立的例項,通過例項物件可以執行類中的函式。
定義類和物件
使用 class 語句來建立一個新類,class 之後為類的名稱並以冒號結尾;
例項化類其他程式語言中一般用關鍵字 new,但是在 Python 中並沒有這個關鍵字,類的例項化類似函式呼叫方式。
例項方法與屬性
在類的內部,使用 def 關鍵字可以定義一個例項方法;
定義在類裡面,方法外面的屬性稱之為類屬性,定義在方法裡面使用self引用的屬性稱之為例項屬性。
__init__方法
構造初始化函式,在建立例項物件為其賦值時使用。
理解self
self和物件指向同一個記憶體地址,self就是物件的引用。
魔法方法
在python中,有一些內建好的特定的方法;
方法名是“xxx”;
在進行特定的操作時會自動被呼叫。