廖雪峰Python學(xué)習(xí)筆記之面向?qū)ο蟾呒?jí)編程

先記錄一下代碼,后續(xù)補(bǔ)全學(xué)習(xí)體會(huì)。

1.使用slots

class Student(object): pass

s = Student() s.name='Michael' #動(dòng)態(tài)給實(shí)例綁定一個(gè)屬性 print s.name

def set_age(self,age): #定義一個(gè)函數(shù)作為實(shí)例方法 self.age=age

from types import MethodType s.set_age=MethodType(set_age,s,Student) #給實(shí)例綁定一個(gè)方法 s.set_age(25) #調(diào)用實(shí)例方法 s.age #測(cè)試結(jié)果

s2=Student() #創(chuàng)建新的實(shí)例 s2.set_age(25) #嘗試調(diào)用方法

def set_score(self,score): self.score=score Student.set_score=MethodType(set_score,None,Student) s.set_score(100) s.score s2.set_score(99) s2.score

class Student(object): __slots__=('name','age') #用tuple定義允許綁定的屬性名稱(chēng) s=Student() #創(chuàng)建新的實(shí)例 s.name='Micheal' #綁定屬性name s.age=25 # 綁定屬性age s.score=99 #綁定屬性score

class GraduateStudent(Student): pass g=GraduateStudent() g.score=9999

2.使用@property

code_snap_1:

class Student(object): def get_score(self): return self._score def set_score(self,value): if not isinstance(value,int): raise ValueError('score must be an integer!') if value<0 or value>100: raise ValueError('score must between 0 ~ 100!') self._score=value

s=Student() s.set_score(60) s.get_score() s.set_score(9999)

code_snap_2:

class Student(object): @property def score(self): return self._score @score.setter def score(self,value): if not isinstance(value,int): raise ValueError('score must be an integer!') if value<0 or value>100: raise ValueError('score must between 0 ~ 100!') self._score=value s=Student() s.score=60 s.score s.score=9999

code_snap_3:

class Student(object): @property def birth(self): return self._birth @birth.setter def birth(self,value): self._birth=value @property def age(self): return 2014-self.birth s=Student() s.birth=1988 s.age

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容