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語法簡潔而清晰,具有豐富和強大的類庫。但實際上面向過程...