1. 程式人生 > >知識點好吧:Python的面向物件程式設計學習

知識點好吧:Python的面向物件程式設計學習

     Python的可用性及優勢相信懂的都知道,在這裡我就不過多贅述了,總之一句話人生苦短,我用Python。

基本概念理解

面向物件程式設計——Object Oriented Programming,簡稱OOP,是一種程式設計思想。OOP把物件作為程式的基本單元,一個物件包含了資料和操作資料的函式。

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

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

面向物件的設計思想是抽象出Class,根據Class建立Instance

類與例項

          Python資料學習Q群   519970686
 #物件

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));

def get_grade(self):

if self.score >= 90:

return 'A';

elif self.score >= 60:

return 'B';

else:

return 'C';

bart = Student("yehui", 99);

lisa = Student("yehui01", 55);

bart.print_score();

lisa.print_score();

print(lisa.get_grade());

# 注意到__init__方法的第一個引數永遠是self,

# 表示建立的例項本身,因此,在__init__方法內部,

# 就可以把各種屬性繫結到self,因為self就指向建立的例項本身。   

訪問限制

如果我們不想讓物件的例項的屬性值被外部程式碼修改的話,我們就可以把屬性的名稱前面加上兩個下劃線__,例項的變數名如果以下劃線 開頭,那麼他就是一個私有變數。

繼承與多型

在面向物件程式設計的語言中,繼承是其主要的特性之一(封裝、多型、繼承),在python中,他的面向物件程式設計的繼承和c++等面嚮物件語言相類似,就是子類可以繼父類的屬性和方法,通過繼承,子類獲得了父類的全部功能。我就不總結了,下面是他的繼承方式及格式:

#繼承

class Animal(object):

def run(self):

print("Animal is running...");

class Dog(Animal):

def run(self):

print("Dog is running...");

class Cat(Animal):

def eat(self):

print("Cat is meating...");

class Pig(Animal):

pass;

dog = Dog();

dog.run();

cat = Cat();

cat.run();

cat.eat();

pig = Pig();

pig.run();

# Dog is running...

# Animal is running...

# Cat is meating...

# Animal is running...   

你可以自己在給繼承父類的子類新增方法和屬性,也可也不新增。也可以重寫父類的方法,這樣子類的方法將會覆蓋掉父類的方法。這就是繼承的一個好處:多型。

#多型

def run_twice(animal):

animal.run();

animal.run();

run_twice(Animal());

run_twice(Dog());

# Animal is running...

# Animal is running...

# Dog is running...

# Dog is running...   

python多型允許我們新增父類的子類。對修改封閉:不需要修改依賴Animal型別的run_twice()等函式。

Python是動態語言來說,則不一定需要傳入Animal型別。我們只需要保證傳入的物件有一個run()方法就可以了

獲取物件資訊

通過python內建的一系列函式,我們可以對任意一個物件進行剖析

使用 type()函式判斷物件的型別;

使用isinstance()來判斷類class的繼承型別;

使用dir()函式獲取一個物件的所以屬性和方法。

總結

python的面向物件程式設計的思想和其他的面向物件程式語言大同小異,只不過是寫法和用法的有差異而已,我因為之前有學過c++,所以在這部分的學習也算比較瞭解。所以有想學Python的朋友可以加一下這個企(Q)鵝群519970686,裡面能找到一些你需要的資料,幫你解答一些問題。