Python基础(4):类
類的定義
定義類成員函數(shù)時(shí),必須帶有self參數(shù),通過(guò)這個(gè)參數(shù)訪問(wèn)類的對(duì)象實(shí)例(object instance)。
類的定義,其實(shí)就是定義了代碼塊。這個(gè)代碼塊中可以定義變量、函數(shù),也可以定義語(yǔ)句。
類的成員變量是public,使用雙下劃線開(kāi)頭命名的變量,為private類型(這只是一種convention,其實(shí)還是可以通過(guò)其它方式訪問(wèn),Python中沒(méi)有絕對(duì)的private訪問(wèn)控制)。
在類中定義變量的時(shí)候,要區(qū)分:
- class varialbe -- 在類中定義,被所有實(shí)例共享
- instance variable -- 在類的初始化函數(shù)中定義
下面兩種調(diào)用方式是相同的:
- dog.getcolor(d)
- d.getcolor()
>>> class dog:
???????? m_color = "red"
???????? def shout(self, words):
?????????????????? print("a dog is saying:", words)
???????? def setcolor(self, color):
?????????????????? self.m_color = color
???????? def getcolor(self):
?????????????????? print("color is:", self.m_color)?????????????????
>>> d = dog()
>>> d.getcolor()
color is: red
>>> d.setcolor("yellow")
>>> d.getcolor()
color is: yellow
>>>
繼承
格式:class suclassname(superclassname)
對(duì) overrided 的函數(shù),總是采用動(dòng)態(tài)綁定的方式。如果要實(shí)現(xiàn)靜態(tài)綁定調(diào)用,需要使用 name mangle 機(jī)制。
如果多個(gè)超類中定義了相同的方法,先繼承的那個(gè)類中定義的生效。
?
>>> class homedog(dog):
???????? def shout(self, words):
?????????????????? print("it is a homedog")?????????????????
>>> hd = homedog()
>>> hd.shout("home")
it is a homedog
>>>
類相關(guān)函數(shù)
Issubclass()
Isinstance()
Hasattr()
Getattr()
Setattr()
?
Class.__bases__
Class.__class__
Class.__dict__
?
>>> issubclass(homedog, dog)
True
>>> homedog.__bases__
(<class '__main__.dog'>,)
>>> isinstance(hd, homedog)
True
>>> hd.__class__
<class '__main__.homedog'>
?
>>> hasattr(d, "m_color")
True
>>> hasattr(d, "m_eye")
False
>>> getattr(d, "m_color")
'red'
>>> setattr(d, "m_color", "green")
>>> getattr(d, "m_color")
'green'
?Iterator
class必須支持__iter__()函數(shù),返回一個(gè)iterator對(duì)象,這個(gè)對(duì)象有next()方法。遇到結(jié)束時(shí),返回異常 StopIterator。
一種更快捷的支持iterator的辦法是使用 yield,yield() 自動(dòng)處理上面的函數(shù),保存局部變量。轉(zhuǎn)載于:https://www.cnblogs.com/weichsel/archive/2012/03/04/2379667.html
總結(jié)
以上是生活随笔為你收集整理的Python基础(4):类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一名普通程序员的自我诊断书
- 下一篇: 【Python】mayavi小结