Python基礎教程---讀書筆記七

1. raise語句用於引起一個異常,如raise Exception或者raise Exception('This is test')ide

2. 重要的異常類:函數

   Exception:    全部異常的基類;對象

   AttributeError:    特性引用或賦值失效時引起;繼承

   IOError:    試圖打開不存在文件;索引

   IndexError:    在使用序列中不存在的索引時引起;get

   KeyError:    在使用映射中不存在的鍵時引起;it

   NameError:    在找不到名字(變量)時引起;io

   SyntaxError:    在代碼爲錯誤形式時引起;class

   TypeError:    使用錯誤類型的對象;test

   ValueError:使用正確類型的對象,可是使用了不合適的值;

   ZeroDivisionError:    除法或者模除操做的第二個參數爲0

3. 使用try/except進行異常捕獲和錯誤處理;捕獲後想繼續傳遞異常,使用不帶任何參數的raise語句;

4. 捕獲多種異常的方法:使用多個except;使用except後跟一個異常類元組,except(TypeError, NameError);在異常類後面跟參數e, 能夠打印出異常錯誤信息;

5. 當但願捕獲全部的異常是,只需except後面不添加任何參數;

6. try/except後面跟else語句能夠執行無異常的代碼;而finally語句不管是否出現異常都會執行,經常使用於關閉文件或者套接字;

7. 類的構造方法是一個魔法方法,定義爲__init__,能夠指定除self之外的其餘參數;__del__爲析構方法,儘可能避免使用;

8. 重寫類的構造方法的兩種方式:

   1)調用未綁定的超類的構造方法

       class SongBird(Bird):

           def __init__(self):

               Bird.__init__(self)

               ...

   2)使用super()函數,注意只在新式類中起做用,當繼承多個超類時也只須要調用一次

       __metaclass__ = type

       class SongBird(Bird):

           def __init__(self):

               super(SongBird, self).__init__()

               ...

9. 利用魔法方法集合能夠建立相似於序列或者映射的對象,如__len__(self)、__getitem__(self, key)、__setitem__(self, key, value)、__delitem__(self, key);也能夠經過繼承相關類(e.g. list)並進行重寫;

10. 在新式類中應儘可能避免用訪問器訪問屬性,而應該使用property(fget, fset, fdel, doc--)函數將訪問器定義爲屬性;

   __metaclass__ = type

   class Rectangle:

       def __init(self):

           self.width = 0

           self.height = 0

       def setSize(self, size):

           self.width, self.height = size

       def getSize(self):

           return self.width, self.height

       size = property(setSize, getSize)

11. 靜態方法沒有self參數,能夠被類自己直接調用;類方法定義時須要cls參數;

   __metaclass__ = type

   class MyClass:

       @staticmethod

       def smeth():

           print 'This is a static method'

       @classmethod

       def cmeth(cls):

           print 'This is a class method from', cls

12. 一個實現了__iter__方法的對象是可迭代的,一個實現了next方法的對象則是迭代器

   class Fibs:

       def __init__(self):

           self.a = 0

           self.b = 1

       def next(self):

           self.a, self.b = self.b, self.a+self.b

           return self.a

       def __iter(self):

           return self

13. 任何包含yield語句的函數稱爲生成器,包含兩部分:生成器都函數和生成器的迭代器;生成器的方法:send()、throw()、close();

相關文章
相關標籤/搜索