学学python(4):面向对象及类,模块
1.?????? 關(guān)于類的一些說明
1.1.__init__是類的構(gòu)造函數(shù),和其他語言中的構(gòu)造函數(shù)功能是一樣的,python類中還有其他的特殊方法,比如析構(gòu)函數(shù)為__del__,在方法名的前后都有雙下劃線。構(gòu)造函數(shù)的返回值是None。
1.2.包括構(gòu)造函數(shù)在內(nèi)的所有方法至少要指定一個參數(shù),該參數(shù)代表要調(diào)用其方法的類的對象,為self,相當(dāng)于C#中的this關(guān)鍵字,如果有多個參數(shù)的話,self為第一個參數(shù)。每個方法都通過self參數(shù)來訪問對象屬性。
下面是一個類定義及創(chuàng)建對象調(diào)用的例子:
class Employe:
??? """It is a class named Employe"""
??? def __init__( self ):
????? self.name = ""????
????? self.age = 0
?
??? def printInfo(self):
??????? print "name is %s,age is %s"%(self.name,self.age)
調(diào)用如下:
from Employe import Employe
?
emp1=Employe()#create object of class Employe
print "some info for emp1"
print "name:",emp1.name
print "age:",emp1.age
print "showInfo:",emp1.printInfo()
?
emp1.name="cary"
emp1.age=27
emp1.printInfo()
結(jié)果如下:
some info for emp1
name:
age: 0
showInfo: name is ,age is 0
None
name is cary,age is 27
?
1.3. 類和類的對象都有一些特殊屬性是python為我們創(chuàng)建好的。包括如下:
print Employe.__bases__
print Employe.__dict__
print Employe.__doc__
print Employe.__module__
print Employe.__name__
?
print emp1.__class__
print emp1.__dict__
print emp1.__module__
print emp1.__doc__
1.4. 文檔字符串是一種說明信息,可以對類和函數(shù)使用,但必須放在類,函數(shù)定義緊挨著的下一行,可以使用print Employe.__doc__來顯示文檔字符串。
1.5. 私有屬性:python在遇到雙下劃線開頭的屬性時會進(jìn)行名字調(diào)整,例:
class Test:
??? def __init__(self):
??????? self.public=""
??????? self.__private=""
?
test1=Test()
print "public:",test1.public
#print "private:",test1.__private
print "private:",test1._Test__private
上面程序中我們直接訪問test1對象的__private時python會提示該屬性不存在,這是因為python對其進(jìn)行了重命名,命名后為Test__private,我們訪問這個名字就可以訪問到該屬性。
?
2.?????? 自定義字符串表示:__str__方法,該方法必須返回字符串,下面是例子:
class Employe:
??? """It is a class named Employe"""
??? def __init__( self ):
????? self.name = ""????
????? self.age = 0
?
??? def __str__(self):
??????? return "name is %s,age is %s"%(self.name,self.age)
?
??? def printInfo(self):
??????? print "name is %s,age is %s"%(self.name,self.age)
?
emp1=Employe()#create object of class Employe
emp1.name="cary"
emp1.age=29
print emp1???
?
當(dāng)我們print 類的實例的時候,會調(diào)用對象的__str__方法
?
3.?????? 運(yùn)算符重載:在使用python中運(yùn)算符的時候都會調(diào)用一個python內(nèi)部的特殊方法,比如使用減號(-)運(yùn)算符的時候會調(diào)用__sub__特殊方法,所以重載減號運(yùn)算符就變成了重寫__sub__方法。其他運(yùn)算符和特殊方法的對應(yīng)可以查閱相關(guān)文檔得到。下面是一個重載加法運(yùn)算符的簡單例子,如下:
class NumTest:
??? def __init__(self,num1):
??????? self.data=num1
??? def __add__(self,num2):
??????? return self.data+num2
???
num=NumTest(9)
result=num + 6
print result
?
4. 模塊是邏輯上組織代碼的方法,文件是物理上組織模塊的方法,因此一個文件被看做是一個獨(dú)立模塊,一個模塊也可以看做是一個文件。
5.警告框架:包括一些警告異常類的集合,Warning直接從Exception繼承,作為所有警告的基類,有UserWarning,DeprecationWarning,SyntaxWarning,RuntimeWarning.
6.模塊內(nèi)建函數(shù)
__import__():作為實際上導(dǎo)入模塊的函數(shù),即import語句調(diào)用__import__函數(shù)完成它的工作,如果有必要時我們可以自定義該函數(shù)。
golbals()和locals():分別返回調(diào)用者全局和局部名稱空間的字典,在一個函數(shù)內(nèi)部局部名稱空間代表在函數(shù)執(zhí)行時候定義的所有名字,locals函數(shù)返回就是包含這些名字的字典,globals返回函數(shù)可以訪問的全局名字的字典。
reload():可以重新導(dǎo)入一個已經(jīng)導(dǎo)入的模塊。
7.包:有層次的文件目錄結(jié)構(gòu)。
?
?
本文轉(zhuǎn)自生魚片博客園博客,原文鏈接:http://www.cnblogs.com/carysun/archive/2010/03/08/python4.html,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的学学python(4):面向对象及类,模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: apache访问日志
- 下一篇: websocket python爬虫_p