python攻城獅004 物件導向

2021-10-01 03:39:15 字數 4416 閱讀 2554

python攻城獅004–物件導向

之前三篇

001-函式技巧\變數\包\標準庫

002-高階函式技巧-lambda\filter\map\reduce 函式

003–檔案の讀寫

自然界

程式設計界屬性和方法

將類的某些資訊進行隱藏在內部,不允許外部程式直接訪問.

特點是:只能通過規定方法訪問資料;隱藏類的例項和細節,方便修改和實現.

舉例: atm 取錢 ; 介面:插卡\輸密碼\操作屏

什麼是繼承 : 就是繼承的屬性 ,又分為 公有和私有屬性

以動物舉例:

基 類 :父類

派生類 :子類

意味著:允許不同類的物件,對同一訊息有不一樣的響應

@property: 將類的方法當做屬性來用

**表示如下:

class

petcat

(object):

""" 家貓類 """

def__init__

(self, name, age)

:"""

構造方法

:param name: 貓吃的名稱

:param age: 貓的年齡

"""self.name = name

# 私有屬性,不能給你們操作

self.__age = age

@property

defage

(self)

:return self.__age

@age.setter

defage(self, value):if

notisinstance

(value,

int)

:# 判斷是不是int

print

('年齡只能是整數'

)return

0if value <

0or value >

100:

print

('年齡只能介於0-100之間'

)return

0 self.__age = value

# 描述符

@property

defshow_info

(self)

:""" 顯示貓的資訊 """

return

'我叫:,今年歲'

.format

(self.name, self.age)

def__str__

(self)

:return

'我的物件: '

.format

(self.name)

if __name__ ==

'__main__'

: cat_black = petcat(

'小黑',2

) rest = cat_black.show_info

print

(rest)

# 我叫小黑,今年2歲

# 改變貓的age

cat_black.age =

'hello'

# 負的 \ 超100 \字串 都不行

rest = cat_black.show_info

print

(rest)

# print(cat_black)

__slots__:為指定的類設定乙個靜態屬性列表 ; 為屬性很少的類節約記憶體空間

class

petcat

(object):

""" 家貓類 """

__slots__ =

('name'

,'age'

)def

__init__

(self, name, age)

:"""

構造方法

:param name: 貓吃的名稱

:param age: 貓的年齡

"""self.name = name

# 私有屬性,不能給你們操作

self.age = age

# 描述符

@property

defshow_info

(self)

:""" 顯示貓的資訊 """

return

'我叫:,今年歲'

.format

(self.name, self.age)

def__str__

(self)

:return

'我的物件: '

.format

(self.name)

class

huacat

(petcat)

:""" 中華田園貓 """

__slots__ =

('color',)

#這個slots後邊加了東西

pass

defeat()

:print

('我喜歡吃魚'

)if __name__ ==

'__main__'

:# cat_black = petcat('小黑', 2)

# rest = cat_black.show_info

# print(rest)

# # 給例項新增新的屬性

# cat_black.color = '白色'

# print(cat_black.color)

# # 給例項新增新的方法(函式)

# cat_black.eat = eat

# cat_black.eat()

# 使用slots後不允許給例項新增新的屬性

# cat_black.color = '白色'

# print(cat_black.color)

# 使用slots後給例項新增新的方法(函式)

# cat_black.eat = eat

# cat_black.eat()

cat_white = huacat(

'小白',3

) rest = cat_white.show_info

print

(rest)

# 我叫:小白,今年3歲

cat_white.color =

'白色'

print

(cat_white.color)

# 白色

cat_white.name =

'旺旺'

print

(cat_white.show_info)

#我 叫:旺旺,今年3歲

class

cat(

object):

tag =

'貓科動物'

def__init__

(self, name)

: self.name = name

@staticmethod

defbreath()

:""" 呼吸 """

print

('貓都需要呼吸空氣'

) @classmethod

defshow_info

(cls, name)

:""" 顯示貓的資訊 """

# print('類的屬性:, 例項的屬性: '.format(cls.tag, cls.name))

return cls(name)

# cat = cat(name)

# return cat

defshow_info2

(self)

:""" 顯示貓的資訊 """

# 設計模式

print

('類的屬性:, 例項的屬性: '

.format

(self.tag, self.name)

)if __name__ ==

'__main__'

:# 通過類進行呼叫

cat.breath(

) cat = cat(

'小黑'

)# # 通過類的例項進行呼叫

cat.breath(

) cat.show_info2(

)# 呼叫classmethod

cat2 = cat.show_info(

'小黃'

) cat2.show_info2(

)"""

貓都需要呼吸空氣

貓都需要呼吸空氣

類的屬性:貓科動物, 例項的屬性: 小黑

類的屬性:貓科動物, 例項的屬性: 小黃

"""

python攻城獅003 檔案 讀寫

檔案讀寫是很重要的內容,這涉及到程式和本地文件的互動資訊.以下是內容.一切帝國的大廈,都在這上邊生根發芽.之前兩篇 001 函式技巧 變數 包 標準庫 002 高階函式技巧 lambda filter map reduce 函式 檔案讀寫模式 有以下幾種,需要記住值描述 r 讀取模式 w 寫入模式 ...

Python從小白到攻城獅(6) 條件與迴圈

在前面幾篇文章中,我們學習了列表 元組 字典 集合和字串等一系列python的基本資料型別和資料結構。但僅靠這些資料結構型別是無法支援整個程式執行的,在程式設計中,流程控制是程式執行的基礎,它決定了程式按照什麼方式去執行。條件語句 python的條件語句和其他語言一樣,都是用if語句實現。if語句表...

python 物件導向 python是物件導向嗎

python是一種物件導向 解釋型計算機程式語言,由guido van rossum於1989年底發明,第乙個公開發行版發行於1991年,python 源 同樣遵循 gpl gnu general public license 協議。python語法簡潔而清晰,具有豐富和強大的類庫。但實際上面向過程...