一、類(PT第九章) 9.3.4 方法對象
class MyClass: """A simple example class""" i = 12345 def f(self): return "hello world" xf = x.f while True: print xf()
9.3.5 類和實例變量方法的特別之處在于實例對象被作為函數的第一個參數傳給了函數。在我們的示例中,調用x.f()完全等同于MyClass.f(x)。一般情況下,以n
個參數的列表調用一個方法就相當于將方法所屬的對象插入到列表的第一個參數的前面,然后以新的列表調用相應的函數。如果你還是不明白方法的工作原理,了解一下它的實現或許有幫助。引用非數據屬性的實例屬性時,會搜索它的類。如果這個命名確認為一個有效的類屬性即函數對象,就會將實例對象和函數對象封裝進一個抽象對象:這就是方法對象。以一個參數列表調用方法對象時,它被重新拆封,用實例對象和原始的參數列表構造一個新的參數列表,然后以這個新的參數列表調用對應的函數對象。
一般來說,實例變量用于對每一個實例都是唯一的數據,類變量用于類的所有實例共享的屬性和方法:
class MyClass: """A simple example class""" i = 12345 def f(self): return "hello world" a=MyClass() b=MyClass() print a.i is b.i print a.i is MyClass.i a.i=5 print a.i is b.i print a.i is MyClass.i
重要的警告:默認值只計算一次。這使得默認值是可變的對象如列表、字典或大部分類的實例時會有所不同
class MyClass: """A simple example class""" i = 12345 def f(self): return "hello world" def t(self,L=[]): L.append("a") return L a=MyClass() b=MyClass() print a.t() print b.t()9.4 補充說明
通常,方法的第一個參數稱為self。這僅僅是一個約定:名字self對 Python 而言絕對沒有任何特殊含義。但是請注意:如果不遵循這個約定,對其他的 Python 程序員而言你的代碼可讀性就會變差,而且有些類 查看 器程序也可能是遵循此約定編寫的。
問題:為啥p方法訪問不到o,但如果在__init__函數里定義了o就可以訪問呢
class MyClass: """A simple example class""" i = 12345 def f(self): self.o=123 return "hello world" def t(self,L=[]): L.append("a") return L def p(self): print self.o a=MyClass() a.p()9.8 異常也是類
class B: pass class C(B): pass class D(C): pass for c in [B, C, D]: try: raise c() except D: print "D" except C: print "C" except B: print "B"9.9 迭代器
class Reverse: """Iterator for looping over a sequence backwards.""" def __init__(self, data): self.data = data self.len=len(data) self.index=-1 def __iter__(self): return self def next(self): if self.index == self.len-1: self.index=-1 raise StopIteration self.index = self.index + 1 return self.data[self.index] r=Reverse("abc") for x in r: print x print r.index二、標準庫概覽(PT第十、十一章)
導入模塊語句
模塊即為一個py文件,模塊名就是py文件名去掉.py,import后面接的就是模塊名,不同的模塊可以放在不同的包(就是文件夾啦,from后面接的那個就是包名)里,導入方法有兩種,比如包名叫做package,模塊名叫module,這個模塊里有個方法叫做function(),有個類叫Class
方式1:
import package.module #調用方法的方式為 package.module.function()
import package.module #調用方法的方式為 package.module.Class()
方式2:
from package import module #調用方法的方式為 module.function()
而且,import后面可以接模塊內的方法名,from后面接模塊名,比如:
from package.module import function #可以直接調用 function()
from package.module import Class #可以直接調用 Class()
然而并不存在import package.module.function的用法
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40664.html
摘要:我們將會創建一個簡單的,來讓管理員能夠查看和編輯和。我們將會在接下來的例子中使用這個賬戶。創建一個新的模塊叫。但是是一個好的設計。最后,我們使用來導入默認的登錄登出這是可選的。我們想啟用分頁和只有用戶能夠調用。 Quickstart 我們將會創建一個簡單的API,來讓管理員能夠查看和編輯Users和Groups。 項目開始 創建一個新的項目叫 tutorial,然后創建一個app叫qu...
摘要:我們將會創建一個簡單的,來讓管理員能夠查看和編輯和。我們將會在接下來的例子中使用這個賬戶。創建一個新的模塊叫。但是是一個好的設計。最后,我們使用來導入默認的登錄登出這是可選的。我們想啟用分頁和只有用戶能夠調用。 Quickstart 我們將會創建一個簡單的API,來讓管理員能夠查看和編輯Users和Groups。 項目開始 創建一個新的項目叫 tutorial,然后創建一個app叫qu...
摘要:我們將會創建一個簡單的,來讓管理員能夠查看和編輯和。我們將會在接下來的例子中使用這個賬戶。創建一個新的模塊叫。但是是一個好的設計。最后,我們使用來導入默認的登錄登出這是可選的。我們想啟用分頁和只有用戶能夠調用。 Quickstart 我們將會創建一個簡單的API,來讓管理員能夠查看和編輯Users和Groups。 項目開始 創建一個新的項目叫 tutorial,然后創建一個app叫qu...
摘要:測試這是一個測試鏈接。注意編寫注釋是一個好的習慣。包括各個字段的驗證標記,例如。字段標記也能夠控制在某些環境中如何顯示,例如呈現為之前的標記相當于中的。類似于有和類,也包含和兩個類。 Serialization——序列化 官網地址 前言 本教程將會介紹創建一個簡單webAPI。在整個學習的過程中,將會逐一介紹到REST framework的各種組件,讓你全面的了解所有東西是如果組合在一...
摘要:測試這是一個測試鏈接。注意編寫注釋是一個好的習慣。包括各個字段的驗證標記,例如。字段標記也能夠控制在某些環境中如何顯示,例如呈現為之前的標記相當于中的。類似于有和類,也包含和兩個類。 Serialization——序列化 官網地址 前言 本教程將會介紹創建一個簡單webAPI。在整個學習的過程中,將會逐一介紹到REST framework的各種組件,讓你全面的了解所有東西是如果組合在一...
閱讀 2984·2023-04-26 00:23
閱讀 3399·2021-09-13 10:28
閱讀 2178·2021-08-31 14:18
閱讀 2883·2019-08-30 15:54
閱讀 1938·2019-08-30 15:43
閱讀 1276·2019-08-29 16:56
閱讀 2799·2019-08-29 14:16
閱讀 2052·2019-08-28 17:51