1. 程式人生 > >Python基礎之五面向物件程式設計

Python基礎之五面向物件程式設計

'''

        面向物件程式設計————Object Oriented Programming,簡稱OOP,是一種程式設計思想。
    OOP把物件作為程式的的基本單元,一個物件包含了資料和操作資料的函式.
        面向過程的程式設計把計算機程式視為一系列的命令集合,及一組函式的順序執行。為了簡化程式設計,
    面向過程吧函式繼續切分為子函式,把大塊函式通過切割成次凹函式來降低系統的複雜度
        面向物件的程式設計把計算機程式視為一組物件的集合,而每個物件都可以接收其他物件發過來的訊息,
    並處理這些訊息,計算機程式的執行就是一系列訊息在哥哥物件之間的傳遞

'''
''' 類和例項 面向物件那個最重要的概念就是類(Class)和例項(Instance),必須牢記類的抽象模板 而例項是根據類創建出來的一個個具體的"物件",每個物件都擁有相同的方法,單個字資料可能不同 ''' class Student(object):#定義一個類 pass bart = Student()#例項化一個物件 print(bart)#列印這個物件 print(Student) bart.name = 'Bart Simpson'#給Student物件賦值 print(bart.name) class Student(object)
:
def __init__(self, name, score):#__init__方法的第一個引數永遠是self,便是建立的例項本身 self.name = name#將資料繫結到self上 self.score = score bart = Student('Bart Simpson', 59)#例項化物件 print(bart.name, bart.score) ''' 資料封裝 面向物件程式設計的一個重要特點就是資料封裝。 ''' 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)) bart = Student('張三男', 89) print(bart.print_score()) ''' 小結 類是建立例項的模板, 而例項則是一個一個具體的物件,各個例項擁有的資料互相獨立,互不影響; 方法就是與例項繫結的函式, 和普通函式不同,方法可以直接訪問例項變數; 通過在例項上呼叫方法,我們就直接操作了物件內部的資料,但無需知道方法內部的實現細節。 和靜態語言不同,Python允許例項變數繫結任何資料,也就是說對於兩個例項變數,雖然他們都是同一類的不同例項,但擁有變數名稱都可能不同 ''' ''' 訪問限制: 在Class內部,可以有屬性和方法,而外部程式碼可以通過直接呼叫例項變數的方法來操作資料,這樣就隱藏了內部的復邏輯 ''' class Student(object): def __init__(self, name, score): self.__name = name#設定為似有變數外部不可訪問 self.__score = score def print_socre(self): print('%s: %s' % (self.__name, self.__score)) def get_name(self):#需要獲得資料可以通過get方法 return self.__name def get_score(self): return self.__score def set_name(self, name): self.__name = name def set_score(self, score): self.__score = score bart = Student('張三', 89) print(bart.get_name()) print(bart.set_name("李四")) print(bart.get_name()) ''' 繼承和多型: 在OOP程式設計中,當我們能定義一個class的時候,可以從某個現有的class繼承, 新的class稱之為子類(Subclass),而被繼承的class稱之為基類,父類或者超類 ''' class Animal(object):#編寫個父類 def run(self): print('Animal is runing...') class Dog(Animal):#繼承Animal pass class Cat(Animal): def run(self): print('Cat is runing...') dog = Dog() print(dog.run())#子類擁有父類所有方法 cat = Cat() print(cat.run())#子類可以複寫父類方法,實現自己內部邏輯 a = list()#a是一個list型別 b = Animal()#b 是Animal型別 c = Dog()#c是Dog型別 isinstance(a, list)#判斷一個變數是否是某個型別可以呀isinstance()判斷 print(isinstance(a, list)) print(isinstance(b, Animal)) print(isinstance(c, Dog)) print(c, Animal) ''' 獲取物件資訊: type() 一般用於資料型別判斷 isinstance() 一般用於函式型別判斷 dir() 獲取物件的所有屬性和方法 ''' print(type(234))#基本型別可以用type() print(type(abs))#一個變數指向函式或者類可以呀type() print(isinstance(b, Animal))#判斷b是否是Animal型別 print(isinstance([1, 2, 3], (list,tuple)))#判斷一個變數是否是某些型別的一種 print(dir('ABC')) ''' 例項熟屬性和類屬性 '''

更多精彩內容訪問個人站點www.gaocaishun.cn