1. 程式人生 > >Python面向對象編程(1)類和實例

Python面向對象編程(1)類和實例

今日頭條 結果 計算機程序 個學生 流程 相同 procedure 部分 orien

Python面向對象編程(1)類和實例【轉載】

面向過程和面向對象編程

面向過程(Procedure Oriented Programming,POP)和 面向對象編程(Object Oriented Programming,OOP) 是兩種主要的程序設計思想。這裏簡單通俗地講一下兩者的區別:

編程的目的:為了去解決一個問題,或者處理一件事情,比如編寫一個程序自動處理學生的信息,或者編寫一個程序可以自動做北京烤鴨。

面向過程編程:按順序編寫一系列程序集合,然後執行,得到想要的結果。比如處理學生信息時:編寫一條代碼獲取學生性別信息,然後再獲取成績信息,最後打印出該學生的姓名及成績,對於每一個學生,把前面的代碼執行一遍就可以打印出相應的信息。

對於做北京烤鴨也是類似,第一步洗鴨子,接著烤鴨子,最後切了吃掉,吃完了還不飽 ,那就再執行一次,再吃一只。按照我們寫好的命令集合順序執行,之後得到想要的結果,這就是面向過程的編程,其註重的是編寫整個處理的流程。當然為了簡化程序設計,面向過程運用函數把整個過程切分為多個子函數降低系統的復雜度,但它依然是面向過程編程。

面向對象編程:面向對象的編程把計算機程序視為一組對象的集合。比如,處理學生信息時,面向對象的編程並不是想著怎麽編寫程序去處理每個學生的信息,而是把所有這些學生當作一個類(Class),同時把處理類的程序也當作類的一部分,即所有的學生構成一個,類有自己的屬性和方法,比如姓名和成績都是屬性,而打印成績就是方法,而每一個具體的學生只不過是類的一個實例/對象

。這樣不僅可以使代碼更簡潔,也很容易修改屬性和方法。

舉個例子說明具體的區別:

面向過程

std1 = { ‘name‘: ‘Michael‘, ‘score‘: 98 }
std2 = { ‘name‘: ‘Bob‘, ‘score‘: 81 }

# 處理學生信息可以通過函數實現,比如打印學生的成績:

def print_core(std):
    print(‘%s : %s‘%(std[‘name‘],std[‘score‘]))

print_core(std1)
print_core(std2)
Michael : 98
Bob : 81

面向對象

class Student(object):
    def __init__(self,name,score):
        self.name = name
        self.score = score
    def print_score(self):
        print(‘%s : %s‘%(self.name,self.score))

amy = Student(‘amy‘,120)
jack = Student(‘jack‘,108)

amy.print_score()
jack.print_score()
amy : 120
jack : 108

類與實例

面向對象最重要的概念就是類(Class)和實例(Instance),必須牢記類是抽象的模板,比如Student類,是一個統稱,泛指所有的學生,而實例是根據類創建出來的一個具體的“對象”,比如張三、李四,每個對象都擁有相同的方法,但各自的數據/屬性可能不同。

以Student類為例,在Python中,定義類是通過class關鍵字:

class Student(object):
    pass

class 後面緊接著是類名,即 Student,類名通常是大寫開頭的單詞,通常采用大駝峰命名法,緊接著是(object),表示該類是從哪個類繼承下來的,繼承的概念後面再講,通常,如果沒有合適的繼承類,就使用 object 類,這是所有類最終都會繼承的類。

定義好了 Student 類,就可以根據 Student 類創建出 Student 的實例,創建實例是通過類名+()實現的:

amy = Student()
print(amy)
print(Student)
<__main__.Student object at 0x000001E75252CBE0>
<class ‘__main__.Student‘>

可以看到,變量 amy 指向的就是一個 Student 的實例,後面的 0x000001E75252CBE0 是內存地址,每個object的地址都不一樣,而Student本身則是一個類。

原文鏈接:https://www.toutiao.com/a6576892638585160205/?tt_from=android_share&utm_campaign=client_share&timestamp=1531463659&app=news_article&iid=37513798929&utm_medium=toutiao_android
原文作者:今日頭條 - 小AI咨詢

Python面向對象編程(1)類和實例