類 和 物件 是 物件導向程式設計的 兩個 核心概念
類, 是對一群具有 相同 特徵 或者 行為 的事物的乙個統稱,是抽象的,不能直接使用
特徵 被稱為 屬性
行為 被稱為 方法
類 就相當於製造飛機時的圖紙,是乙個 模板,是 負責建立物件的
物件 是 由類建立出來的乙個具體存在,可以直接使用
在程式開發中,應先有類,再有物件『方法名格式的方法是 python 提供的 內建方法 / 屬性』
函式,也是乙個方法
class
cat:
defeat
(self)
:print
('小貓愛吃魚'
)def
drink
(self)
:print
("小貓要喝水"
)# 建立貓物件 物件變數 = 類名
tom = cat(
)tom.eat(
)tom.drink(
)print
(tom)
結果-----cat 表示 tom 引用了哪個物件(這裡說明引用了貓物件)小貓愛吃魚
小貓要喝水
<main.cat object at 0x103c124a8>
at 0x103c124a8 說明貓物件存放的位址
class
cat:
defeat
(self)
:print
('小貓愛吃魚'
)def
drink
(self)
:print
("小貓要喝水"
)# 建立貓物件 物件變數 = 類名
tom = cat(
)tom.eat(
)tom.drink(
)print
(tom)
print
("------------------"
)# 建立新的貓物件
lazy_cat = cat(
)lazy_cat.eat(
)lazy_cat.drink(
)print
(lazy_cat)
小貓愛吃魚小貓要喝水
<main.cat object at 0x1015204e0>
小貓愛吃魚2個輸出的位址不一樣,說明了 每次物件引用的時候,都會新建立類乙個位址小貓要喝水
<main.cat object at 0x1015205c0>
由 哪乙個物件 呼叫的方法,方法內的 self 就是 哪乙個物件的引用在類封裝的方法內部,self 就表示 當前呼叫方法的物件自己
呼叫方法時,程式設計師不需要傳遞 self 引數
在方法內部
–>可以通過 self. 訪問物件的屬性
–>可以通過 self. 呼叫其他的物件方法
class
cat:
def__inint__
(self)
:print
("這是乙個初始化方法"
)# 當使用 類名() 建立物件時,會自動執行以下操作
# 1.為物件在記憶體中 分配空間———— 建立物件
# 2.為物件的屬性 設定初始值———— 初始化方法(init)
#tom = cat(
)
class
cat:
def__init__
(self)
:print
("這是乙個初始化方法"
)# self.屬性名 = 屬性的初始值
self.name =
"tom"
# 使用類名字()建立物件的時候,會自動呼叫初始化方法__init__
tom = cat(
)print
(tom.name)
class
cat:
def__init__
(self, new_name)
:print
("這是乙個初始化方法"
)# self.屬性名 = 屬性的初始值
# self.name = "tom"
self.name = new_name
defeat(self)
:print
("%s 愛吃魚"
% self.name)
# 使用類名字()建立物件的時候,會自動呼叫初始化方法__init__
tom = cat(
"tom"
)tom.eat(
)lazy_cat = cat(
"大懶貓"
)lazy_cat.eat(
)
del方法
class
cat:
def__init__
(self, new_name)
: self.name = new_name
print
("%s 來了"
% self.name)
def__del__
(self)
:print
("%s 去了"
% self.name)
# tom 是乙個全域性變數
tom = cat(
"tom"
)print
(tom.name)
str方法
使用前
class
cat:
def__init__
(self, new_name)
: self.name = new_name
print
("%s 來了"
% self.name)
def__del__
(self)
:print
("%s 已經離開世界了"
% self.name)
# def __str__(self):
# # 必須返回乙個字串
# return "我是小貓[%s]" % self.name
tom = cat(
"tom"
)print
(tom)
tom 來了使用後<main.cat object at 0x103002438>
tom 已經離開世界了
class
cat:
def__init__
(self, new_name)
: self.name = new_name
print
("%s 來了"
% self.name)
def__del__
(self)
:print
("%s 已經離開世界了"
% self.name)
def__str__
(self)
:# 必須返回乙個字串
return
"我是小貓[%s]"
% self.name
tom = cat(
"tom"
)print
(tom)
tom 來了我是小貓[tom]
tom 已經離開世界了
在 python 中,使用 print 輸出 物件變數,預設情況下,
會輸出這個變數 引用的物件 是 由哪乙個類建立的物件,
以及 在記憶體中的位址(十六進製制表示)
如果在開發中,希望使用 print 輸出 物件變數 時,
能夠列印 自定義的內容,就可以利用 __str__ 這個內建方法了
Python 物件導向1 物件導向介紹
一 無論用什麼形式來程式設計,我們都要明確記住以下原則 1 寫重複 是非常不好的低階行為 2 你寫的 需要經常變更,寫 一定要遵循易讀,易改的原則 3 函式程式設計與oop 物件導向 的主要區別就是oop可以使程式更加容易擴充套件和易更改。二 物件導向三大特性 1 封裝 封裝可以隱藏實現細節,使得 ...
python物件導向1
征服python 3 1 類的定義與使用 class book 類的定義 name kk pages 0 print book.name a book 類的訪問 a.name book1 a物件的name的訪問 print a.name b book b.name book2 print b.nam...
Python基礎 物件導向 1
魔法函式 物件導向概述 幾個名詞 類和物件的概念 類的內容,應該具有兩個內容 類的基本實現 如何宣告乙個類 可以通過缺省內置變數檢查類和物件的所有成員 類的所有成員檢查 定義乙個學生類,用來形容學生 class student 乙個空類,pass代表跳過 pass必須有 pass 定義乙個物件 zs...