天天看點

Python内置函數

Python:内置函數

Python所有的内置函數

Built-in Functions
abs() divmod() input() open() staticmethod()
all() enumerate() int() ord() str()
any() eval() isinstance() pow() sum()
basestring() execfile() issubclass() print() super()
bin() file() iter() property() tuple()
bool() filter() len() range() type()
bytearray() float() list() raw_input() unichr()
callable() format() locals() reduce() unicode()
chr() frozenset() long() reload() vars()
classmethod() getattr() map() repr() xrange()
cmp() globals() max() reversed() zip()
compile() hasattr() memoryview() round() __import__()
complex() hash() min() set() apply()
delattr() help() next() setattr() buffer()
dict() hex() object() slice() coerce()
dir() id() oct() sorted() intern()

常用的内置函數

内置方法  說明
 __init__(self,...)  初始化對象,在建立新對象時調用
 __del__(self)  釋放對象,在對象被删除之前調用
 __new__(cls,*args,**kwd)  執行個體的生成操作
 __str__(self)  在使用print語句時被調用
 __getitem__(self,key)  擷取序列的索引key對應的值,等價于seq[key]
 __len__(self)  在調用内聯函數len()時被調用
 __cmp__(stc,dst)  比較兩個對象src和dst
 __getattr__(s,name)  擷取屬性的值
 __setattr__(s,name,value)  設定屬性的值
 __delattr__(s,name)  删除name屬性
 __getattribute__()  __getattribute__()功能與__getattr__()類似
 __gt__(self,other)  判斷self對象是否大于other對象
 __lt__(slef,other)  判斷self對象是否小于other對象
 __ge__(slef,other)  判斷self對象是否大于或者等于other對象
 __le__(slef,other)  判斷self對象是否小于或者等于other對象
 __eq__(slef,other)  判斷self對象是否等于other對象
 __call__(self,*args)  把執行個體對象作為函數調用

__init__()

__init__方法在類的一個對象被建立時,馬上運作。這個方法可以用來對你的對象做一些你希望的初始化。注意,這個名稱的開始和結尾都是雙下劃線。

代碼例子:

#!/usr/bin/python
# Filename: class_init.py
class Person:    
    def __init__(self, name):
        self.name = name    
    def sayHi(self):        
    print 'Hello, my name is', self.name
p = Person('Swaroop')
p.sayHi()

輸出:
Hello, my name is Swaroop      

說明:__init__方法定義為取一個參數name(以及普通的參數self)。在這個__init__裡,我們隻是建立一個新的域,也稱為name。注意它們是兩個不同的變量,盡管它們有相同的名字。點号使我們能夠區分它們。最重要的是,我們沒有專門調用__init__方法,隻是在建立一個類的新執行個體的時候,把參數包括在圓括号内跟在類名後面,進而傳遞給__init__方法。這是這種方法的重要之處。現在,我們能夠在我們的方法中使用self.name域。這在sayHi方法中得到了驗證。

__new__()

__new__()在__init__()之前被調用,用于生成執行個體對象.利用這個方法和類屬性的特性可以實作設計模式中的單例模式.單例模式是指建立唯一對象嗎,單例模式設計的類隻能執行個體化一個對象.

#!/usr/bin/python
# -*- coding: UTF-8 -*-
class Singleton(object):    
    __instance = None                       # 定義執行個體

    def __init__(self):        
        pass

    def __new__(cls, *args, **kwd):         # 在__init__之前調用
        if Singleton.__instance is None:    # 生成唯一執行個體
            Singleton.__instance = object.__new__(cls, *args, **kwd)                   
        return Singleton.__instance      

__getattr__()、__setattr__()和__getattribute__()

當讀取對象的某個屬性時,python會自動調用__getattr__()方法.例如,fruit.color将轉換為fruit.__getattr__(color).當使用指派語句對屬性進行設定時,python會自動調用__setattr__()方法.__getattribute__()的功能與__getattr__()類似,用于擷取屬性的值.但是__getattribute__()能提供更好的控制,代碼更健壯.注意,python中并不存在__setattribute__()方法.

代碼例子:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
class Fruit(object):
    def __init__(self, color = "red", price = 0):
       self.__color = color
       self.__price = price
        
    def __getattribute__(self, name):               # 擷取屬性的方法
       return object.__getattribute__(self, name)
    def __setattr__(self, name, value):
       self.__dict__[name] = value
if __name__ == "__main__":
   fruit = Fruit("blue", 10)
   print fruit.__dict__.get("_Fruit__color")       # 擷取color屬性
   fruit.__dict__["_Fruit__price"] = 5
   print fruit.__dict__.get("_Fruit__price")       # 擷取price屬性      

__getitem__()

如果類把某個屬性定義為序列,可以使用__getitem__()輸出序列屬性中的某個元素.假設水果店中銷售多鐘水果,可以通過__getitem__()方法擷取水果店中的沒種水果

#!/usr/bin/python

# -*- coding: UTF-8 -*-

class FruitShop:

      def __getitem__(self, i):      # 擷取水果店的水果

            return self.fruits[i]      

if __name__ == "__main__":

     shop = FruitShop()

     shop.fruits = ["apple", "banana"]

     print shop[1]

     for item in shop:               # 輸出水果店的水果

          print item,

輸出為:

banana

apple banana

輸出為:
banana
apple banana      

__str__()

__str__()用于表示對象代表的含義,傳回一個字元串.實作了__str__()方法後,可以直接使用print語句輸出對象,也可以通過函數str()觸發__str__()的執行.這樣就把對象和字元串關聯起來,便于某些程式的實作,可以用這個字元串來表示某個類

#!/usr/bin/python
# -*- coding: UTF-8 -*-
class Fruit:      
    '''Fruit類'''               #為Fruit類定義了文檔字元串
    def __str__(self):          # 定義對象的字元串表示
        return self.__doc__

if __name__ == "__main__":
    fruit = Fruit()
    print str(fruit)            # 調用内置函數str()出發__str__()方法,輸出結果為:Fruit類
    print fruit                 #直接輸出對象fruit,傳回__str__()方法的值,輸出結果為:Fruit類      

__call__()

#!/usr/bin/python
# -*- coding: UTF-8 -*-
class Fruit:
    class Growth:        # 内部類
        def __call__(self):
            print "grow ..."

    grow = Growth()      # 調用Growth(),此時将類Growth作為函數傳回,即為外部類Fruit定義方法grow(),grow()将執行__call__()内的代碼
if __name__ == '__main__':
    fruit = Fruit()
    fruit.grow()         # 輸出結果:grow ...
    Fruit.grow()         # 輸出結果:grow ...      
下一篇: 線程1