python學習筆記 2(OOP)

2021-07-25 07:34:11 字數 2344 閱讀 4636

標籤(空格分隔): python

在python的官方幫助文件中有關於property類(built-in class)的說明(the python standard library/2 built-in functions)

class

student

(object):

def__init__

(self,name='empty'):

self._name = name

defget_name

(self):

return self._name

defset_name

(self,name):

self._name = name

defdel_name

(self):

del self._name

name = property(get_name, set_name, del_name, 'i am the property sample')

foo = student("xiaoming")

print (foo.name)

foo.name = 'haizhen'

print (foo.name)

del foo.name

通過上面的例子可以看出,property可以使得類屬性的訪問、設定即隱晦又直接(把普通的賦值語句與方法聯絡在一起)。因為property還可以作為裝飾器,乙個property物件有getter,setter,和deleter三個方法,因此對於上面的例子還可以有另外一種寫法:

class

student

(object):

def__init__

(self,name='empty'):

self._name = name

@property

defname

(self):

return self._name

@name.setter

defname

(self,name):

self._name = name

@name.deleter

defname

(self):

del self._name

foo = student("xiaoming")

print (foo.name)

foo.name = 'haizhen'

print (foo.name)

del foo.name

如果不定義setter那麼就相當於是乙個唯讀屬性:

class

student

(object):

@property

defbirth

(self):

return self._birth

@birth.setter

defbirth

(self, value):

self._birth = value

@property

defage

(self):

return

2015 - self._birth

上面的例子中,age就是唯讀的

練習:利用@property給乙個screen物件增加width與height屬性,以及乙個唯讀屬性resolution

解答:

class

screen

(object):

@property

defwidth

(self):

return self._width

@width.setter

defwidth

(self,width):

self._width = width

@property

defheight

(self):

return self._height

@height.setter

defheight

(self,height):

self._height = height

@property

defresolution

(self):

return self._height * self._width

bar = screen()

bar.width = 3480

bar.height = 2160

print(bar.resolution)

SV的物件導向程式設計2(OOP)

若想建立乙個與現存的類很相似的新類,但是增加了一些新的變數和方法,那麼可以使用繼承。繼承可以從乙個現存類獲得其變數和子程式 繼承通過增加新的特性提供了可重用性,不要編寫額外 不需要更改基類就可使對現有類增加新的功能。基類包含一些公共的 基礎的屬性和方法。其中方法function之前要冠以virtua...

Python學習筆記12 OOP

繼承的特徵 1.所有類都繼承自object類,即所有的類都是object類的子類 2.子類一旦繼承父類,則可以使用父類中除私有成員外的所有內容 3.子類繼承父類後並沒有將父類成員完全賦值到子類中,而是通過引用的關係訪問呼叫 4.子類中可以定義獨有的成員屬性和方法 5.如果子類中定義的成員和父類成員相...

python學習筆記 物件導向程式設計(OOP)

1.物件 世間萬物皆是物件。通常將物件分為兩部分 靜態部分 屬性 和動態部分 行為 例如人的性別是物件人的屬性,人走路是物件人的行為。python天生是物件導向的。2.類 類是封裝物件的屬性和行為的載體。類是乙個抽象概念,例如定義人是乙個類,那麼男人 女人都是人這一類的例項。3.物件導向程式設計的特...