Python面向對象OOP

一 OOP函數

    與C++和Java同樣,Python一樣具備OOP設計。編碼

過程式:從前到後,一條一條,機器能接受的順序性方式;方式大概爲「首先你應該作什麼,第二應該作什麼,高級點的作點假設若是遇到什麼狀況要作什麼,或者一件事情要作多少多少遍,… …,」spa

OOP式:從「類與對象」方式來抽象和理解世界。例如首先物體(Object)大概能夠分爲「生物」與「非生物」,「生物」又能分爲「人、動物、植物」等,「人」又分爲「男人,女人」等。。。大天然在世界之巔,不斷分類設定。相似於「族譜」,上下之間能「繼承」。設計

類與對象。類是抽象的,是一羣的概述,對象是具體的,獨立的,例如我存在一個獨立的人。對象擁有所在類的屬性和方法,一樣擁有屬於本身對象的屬性(方法)。指針

現實世界中,類擁有屬性(attribute)和行爲(action);抽象數據中,類擁有數據(data)和方法(method)。類之間,存在繼承(inheritance)與改良,類與對象之間,存在實例化。在實例化以後,對象可以在繼承的類成員以外,增長屬於本身的數據成員。對象

二  Python OOP繼承

末 Python 中的坑內存

Python 很強大,坑也很多,一個一個填吧。it

一 Python 處理中文及編碼方式io

    Python3.0以前,因爲編碼的緣故,處理中文夾雜狀況,十分痛苦。要想完全讓它不是問題,第一,理解編碼方式之間轉換;第二,幾個實際例子在手。

二 Python基礎語法

1. 淺拷貝賦值,傳值與傳地址調用

首先看兩個例子,關於一個函數參數爲int和list兩種類型時的不一樣操做,以增長++一個值爲例。

# 傳值value參數
a = 1
def  change_integer(a):
    a = a + 1
    return a
# 傳地址address參數
b = [1,2,3]
def change_list(b):
    b[0] = b[0] + 1
    return b
# test value 
print change_integer(a)
print 'a = ',a
print change_list(b)
print 'b[0] = ',b[0]
#Result:
>a = 1
>b[0] = 2

第一個integer例子中,將一個int類型變量傳遞給函數,原整型變量a發生變化。

第二個list例子中,將一個list類型變量傳遞給函數,原listb發生變化。

緣由在於,對於基本數據類型(例如int),函數會在內存中複製一個新的變量,從而不影響原來變量,這叫「值傳遞」;

對於list來講,並不屬於基本變量,函數傳遞的是一個指針,指向序列在內存中的地址,從而影響原來的值,稱爲「指針傳遞」。

同理,對於matrix或者array類型的數據,也屬於非基本類型,所以array_a = array_b這樣行爲,array_b作操做時一樣會影響到array_a,特別注意!!

相關文章
相關標籤/搜索