物件導向:
物件導向的程式設計的核心是物件(相當於你要處於創造者的思維來建立乙個新的東西,如你要實現什麼東西,需要幹什麼才能創造出來),要理解物件為何物。物件導向的程式設計好比作者寫**,作者要解決的問題就是使主角從乙個屌絲公升級到大神的故事,作者覺得要讓主角成為大神,會給主角鋪墊從弱到強的大綱,主角很弱時和逐漸變強的時候都有不同的特徵,如剛開始只是乙個學生,接著職員,接著創業(這就是物件的概念,時期和特徵分別對應物件的屬性和方法,學生時期對應好好學習。。。),然而作者覺得這個有成神過程有點枯燥,作者又給主角安排的各種敵對物件,為了防止主角半路掛了,又安排了一堆兄弟朋友保駕護航,這些都是物件。然後故事開始,主角經歷了各種風雨最後成神。作者根本不會管主角按照什麼流程成神。
優缺點:
優點是:解決了程式的擴充套件性。對某乙個物件單獨修改,會立刻反映到整個體系中,如對遊戲中乙個人物引數的特徵和技能修改都很容易。
缺點:可控性差,無法向面向過程的程式設計流水線式的可以很精準的**問題的處理流程與結果,物件導向的程式一旦開始就由物件之間的互動解決問題,即便是上帝也無法**最終結果。於是我們經常看到乙個遊戲人某一引數的修改極有可能導致陰霸的技能出現,一刀砍死3個人,這個遊戲就失去平衡。
應用場景:
需求經常變化的軟體,一般需求的變化都集中在使用者層,網際網路應用,企業內部軟體,遊戲等都是物件導向的程式設計大顯身手的好地方。
# 在python 中物件導向的程式設計並不是全部。面向過程:# 物件導向程式設計可以使程式的維護和擴充套件變得更簡單,並且可以大大提高程式開發效率 ,另外,基於物件導向的程式可以使它人更加容易理解你的**邏輯,從而使團隊開發變得更從容。
# 了解一些名詞:類、物件、例項、例項化
# 類:具有相同特徵的一類事物(人、狗、老虎)
# 物件/例項:具體的某乙個事物(隔壁阿花、樓下旺財)
# 例項化:類——>物件的過程
面向過程的程式設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什麼時候處理什麼東西。
優點是:極大的降低了寫程式的複雜度,只需要順著要執行的步驟,堆疊**即可。
缺點是:一套流水線或者流程就是用來解決乙個問題,**牽一髮而動全身。
應用場景:一旦完成基本很少改變的場景,著名的例子有linux核心,git,以及apache http server等。
pass
類和物件:
類是對一群具有相同特徵或行為的食物的乙個統稱,是抽象的,特徵被稱為屬性,行為被稱為方法
物件是由類建立出來的乙個具體存在,是類的例項化
# 建立類 -- 關鍵字 class例項化:# 格式:
# class 類名:
# 屬性名 = 屬性值
# def 方法名(self):
# 行為
class person:
nationality = 'china' # 國籍是中國 # 這是靜態屬性,定義好後,無法通過方法來修改該屬性
def walk(self): # 定義方法,必須帶乙個self引數,當函式放到乙個類裡,這個函式就叫方法---也叫動態屬性
print('person is walking...',self)
print(person.nationality) # 列印靜態屬性
print(person.walk(1)) # 這個輸出後多乙個none,是因為沒有例項化,類的返回值是none
類名加括號就是例項化,會自動觸發__init__函式的執行,可以用它來為每個例項定製自己的特徵。
例項化的過程就是類--->物件的過程
格式:物件名 = 類名(引數)
# 例項化關於selfclass person:
nationality = 'china'
def __init__(self,personname):
self.name = personname # 屬性
def walk(self):
print('%s is walking...,國籍是%s'%(self.name,self.nationality))
personname = person('jerry') # 例項化 # 類名()就等於在執行person.__init__() # 執行完__init__()就會返回乙個物件。這個物件類似乙個字典,竄著屬於這個物件的一些屬性和方法
print(person.nationality) # 檢視屬性
print(personname.name) # 直接檢視屬性:物件名.屬性名
print(person.walk) # 引用的是方法,這裡不是在呼叫
person.walk(personname)# 這是呼叫方法
personname.walk() # 呼叫類裡的方法 # 等同於person.walk(personname) # 以後呼叫方法都是以這種形式呼叫
self:在例項化時自動將物件/例項本身傳給__init__的第乙個引數,你也可以給他起個別的名字,但是正常都不會這麼做,這是約定俗成的。
類屬性的補充
一:我們定義的類的屬性到底存到**了?有兩種方式檢視物件導向小結——定義及呼叫的固定模式dir(類名):查出的是乙個名字列表
類名.__dict__:查出的是乙個字典,key為屬性名,value為屬性值
二:特殊的類屬性
類名.__name__# 類的名字(字串)
類名.__doc__# 類的文件字串
類名.__base__# 類的第乙個父類(在講繼承時會講)
類名.__bases__# 類所有父類構成的元組(在講繼承時會講)
類名.__dict__# 類的字典屬性
類名.__module__# 類定義所在的模組
類名.__class__# 例項對應的類(僅新式類中)
class 類名:def __init__(self,引數1,引數2):
self.物件的屬性1 = 引數1
self.物件的屬性2 = 引數2
def 方法名(self):pass
def 方法名2(self):pass
物件名 = 類名(1,2) #物件就是例項,代表乙個具體的東西
#類名() : 類名+括號就是例項化乙個類,相當於呼叫了__init__方法
#括號裡傳引數,引數不需要傳self,其他與init中的形參一一對應
#結果返回乙個物件
物件名.物件的屬性1 #檢視物件的屬性,直接用 物件名.屬性名 即可
物件名.方法名() #呼叫類中的方法,直接用 物件名.方法名() 即可
python之路 物件導向
不了解什麼是物件導向,就無法更好的掌握python python既支援面向過程的程式設計也支援物件導向的程式設計。面向過程 程式是由過程或僅僅是可重用 的函式構建起來的。物件導向 程式是由資料和功能組合而成的物件構建起來的。物件導向中兩個重要的概念是類和物件。類是對事物的抽象,比如說 人類 物件是具...
Python學習之路 物件導向補充
1 什麼是物件導向程式設計?以前使用函式 類 物件 2 什麼是類什麼是物件,又有什麼關係?class 類 def 函式1 pass def 函式2 pass obj 是物件,例項化的過程 obj 類 obj.函式1 物件導向不好 函式程式設計好 有時候,函式程式設計能實現,比較麻煩 物件導向可以非常...
python自學之路 物件導向
定義 指類中無需例項參與即可呼叫的方法 不需要self引數 在呼叫過程中,無需將類例項化,直接在類之後使用.號運算子呼叫方法。用法 靜態方法使用 staticmethod裝飾器來宣告 class classa object staticmethod def func a print hello py...