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()

相關文章鏈接

sorted的使用(寫得不錯)

常用的內置函數

內置方法  說明
 __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

 

__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__()

在類中實現__call__()方法,可以在對象創建時直接返回__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 ...

 

轉載自:http://xukaizijian.blog.163.com/blog/static/170433119201111894228877/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM