python 物件導向高階程式設計

2021-08-04 23:29:34 字數 2323 閱讀 1808

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 例項動態新增屬性和方法

fromtypesimportmethodtype

classstudent():

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...