学学python(4):面向对象及类,模块
1.?????? 關于類的一些說明
1.1.__init__是類的構造函數,和其他語言中的構造函數功能是一樣的,python類中還有其他的特殊方法,比如析構函數為__del__,在方法名的前后都有雙下劃線。構造函數的返回值是None。
1.2.包括構造函數在內的所有方法至少要指定一個參數,該參數代表要調用其方法的類的對象,為self,相當于C#中的this關鍵字,如果有多個參數的話,self為第一個參數。每個方法都通過self參數來訪問對象屬性。
下面是一個類定義及創建對象調用的例子:
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)
調用如下:
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()
結果如下:
some info for emp1
name:
age: 0
showInfo: name is ,age is 0
None
name is cary,age is 27
?
1.3. 類和類的對象都有一些特殊屬性是python為我們創建好的。包括如下:
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. 文檔字符串是一種說明信息,可以對類和函數使用,但必須放在類,函數定義緊挨著的下一行,可以使用print Employe.__doc__來顯示文檔字符串。
1.5. 私有屬性:python在遇到雙下劃線開頭的屬性時會進行名字調整,例:
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對其進行了重命名,命名后為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???
?
當我們print 類的實例的時候,會調用對象的__str__方法
?
3.?????? 運算符重載:在使用python中運算符的時候都會調用一個python內部的特殊方法,比如使用減號(-)運算符的時候會調用__sub__特殊方法,所以重載減號運算符就變成了重寫__sub__方法。其他運算符和特殊方法的對應可以查閱相關文檔得到。下面是一個重載加法運算符的簡單例子,如下:
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. 模塊是邏輯上組織代碼的方法,文件是物理上組織模塊的方法,因此一個文件被看做是一個獨立模塊,一個模塊也可以看做是一個文件。
5.警告框架:包括一些警告異常類的集合,Warning直接從Exception繼承,作為所有警告的基類,有UserWarning,DeprecationWarning,SyntaxWarning,RuntimeWarning.
6.模塊內建函數
__import__():作為實際上導入模塊的函數,即import語句調用__import__函數完成它的工作,如果有必要時我們可以自定義該函數。
golbals()和locals():分別返回調用者全局和局部名稱空間的字典,在一個函數內部局部名稱空間代表在函數執行時候定義的所有名字,locals函數返回就是包含這些名字的字典,globals返回函數可以訪問的全局名字的字典。
reload():可以重新導入一個已經導入的模塊。
7.包:有層次的文件目錄結構。
?
?
本文轉自生魚片博客園博客,原文鏈接:http://www.cnblogs.com/carysun/archive/2010/03/08/python4.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的学学python(4):面向对象及类,模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: apache访问日志
- 下一篇: python2.7安装setuptool