程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【博學谷學習記錄】超強總結,用心分享 | 軟件測試 python面向對象基礎

編輯:Python

python面向對象-基礎

      • 1. 基本介紹
      • 2. 類和對象
        • 1. 類的組成
        • 2. 類的抽象(類的設計)
        • 3. 面向對象基本代碼書寫
          • 1. 定義類
          • 2. 創建對象
          • 3. 調用方法
          • 4. 案例實現
        • 4. self 的說明
        • 5. 對象的屬性操作
          • 1. 添加屬性
          • 2. 獲取屬性
        • 6. 魔法方法
          • 1. `__init__ 方法 **`
          • 2. `__str__ 方法 *`
          • 3. `__del__ 方法` [了解]

1. 基本介紹

面向對象是一個編程思想(寫代碼的套路)
編程思想:
1. 面向過程
2. 面向對象
以上兩種都屬於寫代碼的套路(方法) ,最終目的都是為了將代碼書寫出來,只不過過程和思考方法不太一樣.
  • 面向過程
    • 關注的是 具體步驟的實現, 所有的功能都自己書寫
    • 親力親為
    • 定義一個個函數, 最終按照順序調用函數
  • 面向對象
    • 關注的是結果, 誰(對象) 能幫我做這件事
    • 偷懶
    • 找一個對象(), 讓對象去做

2. 類和對象

面向對象的核心思想是 找一個對象去幫我們處理事情
在程序代碼中 對象是由 類 創建的
類和對象,是 面向對象編程思想中非常重要的兩個概念
    • 抽象的概念, 對 多個 特征和行為相同或者相似事物的統稱
    • 泛指的(指代多個,而不是具體的一個)
  • 對象
    • 具體存在的一個事物, 看得見摸得著的
    • 特指的,(指代一個)
蘋果 ---> 類
紅蘋果 ----> 類
張三嘴裡正在吃的那個蘋果 ---> 對象

1. 類的組成

1, 類名 (給這多個事物起一個名字, 在代碼中 滿足大駝峰命名法(每個單詞的首字母大寫))
2, 屬性 (事物的特征, 即有什麼, 一般文字中的名詞)
3, 方法 (事物的行為, 即做什麼事, 一般是動詞)

2. 類的抽象(類的設計)

類的抽象,其實就是找到 類的 類名, 屬性 和方法

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KUfuVebK-1658062462995)(E:\04、python\day06_函數和面向對象基礎\01-筆記\day06 筆記.assets\A5DC4783-CC1A-4B89-9F2A-25AC16B49D77.png)]

類名: 人類(Person, People)
屬性: 名字(name), 年齡(age), 身高(height)
方法: 跑步(run) 吃(eat)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mxxWvVhW-1658062462996)(E:\04、python\day06_函數和面向對象基礎\01-筆記\day06 筆記.assets\A424818D-3279-4899-99F4-ED8ED8D68263.png)]

類名: 狗類(Dog)
屬性: 顏色(color) , 名字(name)
方法: 汪汪叫 (bark), 搖尾巴(shake)

3. 面向對象基本代碼書寫

1. 定義類
先定義簡單的類, 不包含屬性, 在 python 中定義類需要使用關鍵字 class
方法: 方法的本質是在類中定義的函數, 只不過,第一個參數是 self
class 類名:
# 在縮進中書寫的內容,都是類中的代碼
def 方法名(self): # 就是一個方法
pass
2. 創建對象
創建對象是使用 類名() 進行創建,即
類名() # 創建一個對象, 這個對象在後續不能使用
# 創建的對象想要在後續的代碼中繼續使用, 需要使用一個變量,將這個對象保存起來
變量 = 類名() # 這個變量中保存的是對象的地址, 一般可以成為這個變量為對象
# 一個類可以創建多個對象, 只要出現 類名() 就是創建一個對象,每個對象的地址是不一樣的
3. 調用方法
對象.方法名()
列表.sort()
列表.append()
4. 案例實現
需求:小貓愛吃魚,小貓要喝水
類名: 貓類 Cat
屬性: 暫無
方法: 吃魚 (eat) 喝水 (drink )
""" 需求:小貓愛吃魚,小貓要喝水, 定義不帶屬性的類 """
class Cat:
# 在縮進中書寫 方法
def eat(self): # self 會自動出現,暫不管
print('小貓愛吃魚...')
def drink(self):
print('小貓要喝水----')
# 2. 創建對象
blue_cat = Cat()
# 3. 通過對象調用類中的方法
blue_cat.eat()
blue_cat.drink()
# 創建對象
black_cat = Cat()
black_cat.eat()
black_cat.drink()
Cat() # 是
a = black_cat # 不是
b = Cat # 不是

4. self 的說明

class Cat:
# 在縮進中書寫 方法
def eat(self): # self 會自動出現,暫不管
print('小貓愛吃魚...')
black_cat.eat()
1. 從函數的語法上講, self是形參, 就可以是任意的變量名, 只不過我們習慣性將這個形參寫作 self
2. self 是普通的形參, 但是在調用的時候沒有傳遞實參值, 原因是, Python 解釋器在執行代碼的時候, 自動的將調用這個方法的對象 傳遞給了 self, 即 self 的本質是對象
3. 驗證, 只需要確定 通過哪個對象調用, 對象的引用和 self 的引用是一樣的
4. self 是函數中的局部變量, 直接創建的對象是全局變量
""" 需求:小貓愛吃魚,小貓要喝水, 定義不帶屬性的類 """
class Cat:
# 在縮進中書寫 方法
def eat(self): # self 會自動出現,暫不管
print(f'{
id(self)}, self')
print('小貓愛吃魚...')
# 2. 創建對象
blue_cat = Cat()
print(f'{
id(blue_cat)}, blue_cat')
# 3. 通過對象調用類中的方法
blue_cat.eat() # blue_cat 對象調用 eat 方法, 解釋器就會將 blue_cat 對象傳給 self
print('_*_' * 30)
# 創建對象
black_cat = Cat()
print(f"{
id(black_cat)}, black_cat")
black_cat.eat() # black_cat 對象調用 eat 方法, 解釋器就會將 black_cat 對象傳給 self

5. 對象的屬性操作

1. 添加屬性
對象.屬性名 = 屬性值
  • 類內部添加

    在內部方法中, self 是對象,
    self.屬性名 = 屬性值
    # 在類中添加屬性一般寫在 __init__ 方法中
    
  • 類外部添加

    對象.屬性名 = 屬性值 # 一般不使用
    
2. 獲取屬性
對象.屬性名
  • 類內部

    在內部方法中, self 是對象,
    self.屬性名
    
  • 類外部

    對象.屬性名 # 一般很少使用
    
class Cat:
# 在縮進中書寫 方法
def eat(self): # self 會自動出現,暫不管
print(f'{
id(self)}, self')
print(f'小貓{
self.name} 愛吃魚...')
# 2. 創建對象
blue_cat = Cat()
print(f'{
id(blue_cat)}, blue_cat')
# 給 藍貓添加 name 屬性
blue_cat.name = '藍貓'
# 3. 通過對象調用類中的方法
blue_cat.eat() # blue_cat 對象調用 eat 方法, 解釋器就會將 blue_cat 對象傳給 self
print('_*_' * 30)
# # 創建對象
black_cat = Cat()
black_cat.name = '黑貓'
print(f"{
id(black_cat)}, black_cat")
black_cat.eat() # black_cat 對象調用 eat 方法, 解釋器就會將 black_cat 對象傳給 self

6. 魔法方法

python 中有一類方法, 以兩個下劃線開頭,兩個下劃線結尾,並且在滿足某個條件的情況下, 會自動調用, 這類方法稱為 魔法方法
學習:
1. 什麼情況下自動調用
2. 有什麼用, 用在哪
3. 書寫的注意事項
1. __init__ 方法 **
1. 什麼情況下自動調用
> 創建對象之後會自動調用
2. 有什麼用, 用在哪
> 1. 給對象添加屬性的, (初始化方法, 構造方法) 2. 某些代碼, 在每次創建對象之後, 都要執行,就可以將這行代碼寫在 __init__ 方法
3. 書寫的注意事項
> 1. 不要寫錯了 2. 如果 init 方法中,存在出了 self 之外的參數, 在創建對象的時候必須傳參
""" 貓類, 屬性 name, age , show_info(輸出屬性信息) """
class Cat:
# 定義添加屬性的方法
def __init__(self, name, age): # 這個方法是創建對象之後調用
self.name = name # 給對象添加 name 屬性
self.age = age # 給對象添加 age 屬性
# 輸出屬性信息
def show_info(self):
print(f'小貓的名字是: {
self.name}, 年齡是: {
self.age}')
# 創建對象,不要在自己類縮進中創建
# Cat() # 創建對象 ,會輸出
blue_cat = Cat('藍貓', 2)
blue = blue_cat
blue.show_info()
# 創建黑貓
black_cat = Cat('黑貓', 3)
black_cat.show_info()
2. __str__ 方法 *
1. 什麼情況下自動調用
> 使用 print(對象) 打印對象的時候 會自動調用
2. 有什麼用, 用在哪
> 在這個方法中一般書寫對象的 屬性信息的, 即打印對象的時候想要查看什麼信息,在這個方法中進行定義的
> 如果類中沒有定義 __str__ 方法, print(對象) ,默認輸出對象的引用地址
3. 書寫的注意事項
> 這個方法必須返回 一個字符串
class Cat:
# 定義添加屬性的方法
def __init__(self, n, age): # 這個方法是創建對象之後調用
self.name = n # 給對象添加 name 屬性
self.age = age # 給對象添加 age 屬性
def __str__(self):
# 方法必須返回一個字符串, 只要是字符串就行,
return f'小貓的名字是: {
self.name}, 年齡是: {
self.age}'
# 創建對象,不要在自己類縮進中創建
# Cat() # 創建對象 ,會輸出
blue_cat = Cat('藍貓', 2)
print(blue_cat)
# 創建黑貓
black_cat = Cat('黑貓', 3)
print(black_cat)
3. __del__ 方法 [了解]
__init__ 方法, 創建對象之後,會自動調用 (構造方法)
__del__ 方法, 對象被刪除銷毀時, 自動調用的(遺言, 處理後事) (析構方法)
1. 調用場景, 程序代碼運行結束, 所有對象都被銷毀
2. 調用場景, 直接使用 del 刪除對象(如果對象有多個名字(多個對象引用一個對象),需要吧所有的對象都刪除才行 )
class Demo:
def __init__(self, name):
print('我是 __init__, 我被調用了 ')
self.name = name
def __del__(self):
print(f'{
self.name} 沒了, 給他處理後事...')
# Demo('a')
a = Demo('a')
b = Demo('b')
del a # 刪除銷毀 對象,
print('代碼運行結束')

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved