例項物件:程式處理的實際物件
class a:
"""class a here
"""def setname(selef,name)
self.name = name
pass
類中的方法第乙個引數self指的是當例項在呼叫這個方法時,self就是這個例項本身
建立例項物件的方法(下面的語句會自動呼叫乙個類物件都會自帶的構造方法這樣就生成了乙個類的例項)
a = a()
建構函式
_ init _ 建構函式,
析構函式
_ del _析構函式
運算子過載
_ str _
_ repr _
類可以過載加法減法運算、列印、函式呼叫、索引等內建運算,運算子過載使我們的物件行為與內建物件的一樣。python在呼叫操作符時會自動呼叫這樣的方法。
運算子過載 - 索引迭代
class stepper:
def __getitem__(self,i):
return self.data[i]
x = stepper()
x.data = "spam"
print x[1]
運算子過載 - 屬性引用
getattr這個方法是在屬性不存在的時候會呼叫這個方法
class empty:
del __getattr__(self,attrname):
if attrname = "age":
return 40
else:
raise attributeerror,attrname
x = empty()
x.age
繼承
class canimal:
def __init__(self,voice='hello'):
self.voice = voice
def say(self):
print self.voice
def run(self):
pass
class cdog(canimal):
def setvoice(self,voice):
self.voice = voice
def run(self):
print 'running'
dog = cdog()
dog.setvoice('i am a dog!')
子類繼承父類後,子類中的方法過載了父類的方法,那麼就會在子類執行子類過載的方法,這就是多型的體現類的繼承搜尋與多重繼承
類的靜態方法和類方法
class testclass():
def callfunc(self):
print 'callfunc'
@staticmethod
def callstatic():
print 'static call'
@classmethod
def callclass(cls):
print 'class call'
c = testclass()
c.callfunc()
c.callstatic()
c.callclass() # c的例項去呼叫這三個方法都可以呼叫
testclass.callfunc() # 類名不能呼叫例項方法,只能呼叫下面兩個類方法和靜態方法
testclass.callstatic()
testclass.callclass()
普通的方法,第乙個引數需要是self,它表示乙個具體的例項本身。如果用了staticmethod,那麼就可以無視這個self,而將這個方法當成乙個普通的函式使用。而對於classmethod,它的第乙個引數不是self,是cls,它表示這個類本身.新式類新式類增加了 _ slots內建屬性,可以把例項屬性的種類鎖定到slots _規定的範圍之中
新式類增加了_ getattribute _方法 (此方法是點操作,無論有沒有此屬性都觸發的方法)
class a(object):
"""新式類
作為所有類的基類
"""def foo(self):
print "class a"
class a1():
"""經典類
作為所有類的基類
""" def foo(self):
print "class a1"
class c(a):
pass
class c1(a1):
pass
class d(a):
def foo(self):
print "class d"
class d1(a1)
def foo(self):
print "class d1"
class e(c, d):
pass
class e1(c1, d1):
pass
e = e()
e.foo()
e1 = e1()
e1.foo()
print
類的私有屬性
類的私有方法
異常處理器
try except 處理器
x, y = 5, 0
try:
x/yexcept zerodivisionerror:
print 'error'
引發異常
with/as語句
with expression [as variable]:
開啟檔案例子
環境管理協議
exit(self, exc_type, exc_val, exc_tb)用途
python 物件導向程式設計
新式類 class mynewobjecttype bases define mynewobjecttype class class suite經典類 沒有指定乙個父類,或者子類化的基本類沒有父類,就建立了乙個經典類 class mynewobjecttype define mynewobjectt...
Python物件導向程式設計
class mynewobjecttype bases define mynewobjecttype class class suite例項化 myfirstobject mynewobjecttype class mydatawithmethod object defprintfoo self p...
python物件導向程式設計
程式設計正規化 程式設計時程式設計師用特定的語法 資料結構 演算法組成的 在計算機上執行任務的過程。實現乙個任務有不同的方式,對這些不同的程式設計方式的特點進行歸納總結得出的程式設計方式類別,即為程式設計正規化。不同的程式設計正規化本質上代表對各種型別的任務採取的不同的解決問題的思路,兩種最重要的程...