python 裝飾器@property使用
classscreen():@property
defwidth(self):
returnself._width
pass@
width.setter
defwidth(self,value):
self._width=
value
@property
defheight(self):
returnself._height
@width.setter
defheight(self,value):
self._height=
value
@property
defresolution(self):
returnself.width*
self.height
s = screen()
s.width =
1024
s.height =
768print(s.resolution)
asserts.resolution ==
786432, '1024 * 768 = %d ?'
% s.resolution
python _slots_使用
限制例項的屬性,限制屬性僅對當前類的例項有效。
classstudent(object):__slots__ = ('name','age')
s=student()
s.name = '張三
's.age =
2s.***=
'boy'
traceback (most recent call last):file "/home/caidong/developprogram/learndemo/phantomjsdemo/slots.py", line 7, in s.***='ds'
attributeerror: 'student' object has no attribute '***'
python 例項動態新增屬性和方法
fromtypesimportmethodtypeclassstudent():
passs=student()
s.age=
10defset_age(self,age):
self.age =
agedefget_age(self):
returnself.age
s.set_age=methodtype(set_age,s)
s.get_age = methodtype(get_age,s)
s.set_age(1)
b=s.get_age()
print(s.age)
print(b)
python 多繼承
mixin 同時繼承多個類
python 定製類 特殊函式的
_str_ __iter__ __getitem__ __getattr__
__call__
python 列舉類
from enum
import enum
month = enum('month', ('jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'))
@unique
裝飾器可以幫助我們檢查保證沒有重複值。
元類
python物件導向高階程式設計
1.繫結方法 給所有例項都繫結方法,可以給class繫結方法 def set score self,score self.score score student.set score set score 給class繫結方法後,所有例項均可呼叫。但是,如果我們想要限制例項的屬性怎麼辦?比如,只允許對s...
物件導向高階程式設計
相同class的各物件互為友元 class complex int func const complex param private double re,im string inline string string const char cstr 0 else inline string strin...
Python十二 物件導向高階程式設計
當定義了乙個class,建立了乙個class的例項後,我們可以給該例項繫結任何屬性和方法,這就是動態語言的靈活性 給例項繫結乙個屬性 class student object pass s student s.name michael 動態給例項繫結乙個屬性 print a.name michael...