《中谷教育Python影片教學》講的是Python開發的入門教程,它將介紹Python語言的特點和適用範圍,Python基本的資料類型,條件判斷和循環,函數,以及Python特有的切片和列表生成式。希望本python教學能夠讓您快速入門並編寫簡單的Python程式。
課程播放網址:http://www.php.cn/course/501.html
該老師講課風格:
教師講課深入淺出,條理清楚,層層剖析,環環相扣,論證嚴密,結構嚴謹,用思維的邏輯力量吸引學生的注意力,用理智控制課堂教學進程。學生透過聽教師的講授,不僅學到知識,也受到思維的訓練,還受到教師嚴謹的治學態度的熏陶和感染
本視頻中較為難點是面向對象-類和對象了:
Python中一切都是物件。類別提供了建立新類型物件的機制。在這篇教程中,我們不談類別和物件導向的基本知識,而專注在更好地理解Python物件導向程式設計。假設我們使用新風格的python類,它們繼承自object父類。
定義類別
class 語句可以定義一系列的屬性、變數、方法,他們被該類別的實例物件所共用。以下給一個簡單類別定義:
class Account(object): num_accounts = 0 def __init__(self, name, balance): self.name = name self.balance = balance Account.num_accounts += 1 def del_account(self): Account.num_accounts -= 1 def deposit(self, amt): self.balance = self.balance + amt def withdraw(self, amt): self.balance = self.balance - amt def inquiry(self): return self.balance
類別定義引進了下列新物件:
類別物件
# 實例物件
方法物件
類別物件
程式執行過程中遇到類別定義時,就會建立新的命名空間,命名空間包含所有類別變數和方法定義的名稱綁定定。注意該命名空間並沒有建立類別方法可以使用的新局部作用域,因此在方法中存取變數需要全限定名稱。上一節的Account類別示範了該特性;嘗試存取num_of_accounts變數的方法需要使用全限定名稱Account.num_of_accounts,否則,如果沒有在__init__方法中使用全限定名稱,會引發如下錯誤:
class Account(object): num_accounts = 0 def __init__(self, name, balance): self.name = name self.balance = balance num_accounts += 1 def del_account(self): Account.num_accounts -= 1 def deposit(self, amt): self.balance = self.balance + amt def withdraw(self, amt): self.balance = self.balance - amt def inquiry(self): return self.balance >>> acct = Account('obi', 10) Traceback (most recent call last): File "python", line 1, in <module> File "python", line 9, in __init__ UnboundLocalError: local variable 'num_accounts' referenced before assignment
類別定義執行的最後,會建立一個類別物件。在進入類別定義之前有效的那個作用域現在被恢復了,同時類別物件被綁定到類別定義頭的類別名稱上。
先偏離下話題,你可能會問如果創建的類別是對象,那麼類別對象的類別是什麼呢? 。與一切都是物件的python哲學一致,類別物件確實有個類,也就是python新風格類別中的type類別。
>>> type(Account) <class 'type'>
讓你更困惑一點,Account類型的型別是type。 type類是個元類,用於創建其他類,我們稍後教程中再介紹。
類別物件支援屬性參考和實例化。屬性透過標準的點語法引用,即物件後面跟著句點,然後是屬性名稱:obj.name。有效的屬性名稱是類別物件建立後類別命名空間中出現的所有變數和方法名稱。例如:
>>> Account.num_accounts >>> 0 >>> Account.deposit >>> <unbound method Account.deposit>
類別實例化使用函數表示法。實例化會像普通函數一樣無參數呼叫類別對象,如下文中的Account類別:
>>> Account()
類別物件實例化之後,會傳回實例對象,如果類別中定義了__init__方法,就會呼叫,實例物件作為第一個參數傳遞過去。這個方法會進行使用者自訂的初始化過程,例如實例變數的初始化。 Account類別為例,帳戶name和balance會被設置,實例物件的數目增加1。
實例物件
如果類別物件是餅乾切割刀,餅乾就是實例化類別物件的結果。實例物件上的全部有效操作為對屬性、資料和方法物件的參考。
方法物件
方法物件和函數物件類似。如果x是Account類別的實例,x.deposit就是方法物件的例子。方法定義中有一個附加參數,self。 self指向類別實例。為什麼我們需要把實例當作參數傳遞給方法?方法呼叫能最好地說明:
>>> x = Account() >>> x.inquiry() 10
實例方法呼叫時發生了什麼?你應該注意到x.inquiry()呼叫時沒有參數,雖然方法定義包含self參數。那麼這個參數到底發生了什麼事?
特殊之處在於方法所作用的物件被當作函數的第一個參數傳遞過去。在我們的例子中,對x.inquiry()的呼叫等價於Account.f(x)。一般,呼叫n參數的方法等同於將方法的作用對象插入第一個參數位置。
以上是中谷教育Python影片教學資源推薦的詳細內容。更多資訊請關注PHP中文網其他相關文章!