文章目錄
- 1.面向對象編程介紹
- 2.面向對象基本語法
- 3.面向對象的三大特征
- 4.面向對象其他語法
1.面向對象編程介紹
1.1 基本概念
- 概念:面向對象編程(Object-Oriented Programming, OOP)是一種流行的編程范式,它以"對象"為核心組織代碼和數據
- 在面向對象的世界里:
萬事萬物皆對象
1.2 面相過程和面向對象
- 面向過程:
- 根據需求,將某些獨立功能封裝成一個又 一個函數
- 最后完成的代碼,就是順序地調用不同的 函數
- 面相對象:
- 相比較函數,面向對象是更大的封裝,根 據職責在一個對象中封裝多個方法
- 根據職責確定不同的對象,在對象內部封 裝不同的方法
1.3 類和對象的概念
類
:是對具有相同特征或者行為的事物的一個統稱, 是抽象的,不能直接使用- 主要內容:
- 特征(靜態) -> 屬性
- 行為(動態) -> 方法
- 類的設計
- 注意:
大駝峰命名法
: 所有單詞第一個字 母大寫, 單詞之間沒有下劃線類名的提取
:使用名詞提煉法分析整個業務流程, 得出的名詞, 通常就是類名- 對于需求中沒有提到的
屬性
和方法
, 在設計類的時候不要添加進來!
- 想要設計一個類, 通常需要滿足以下三個要素
類名
: 同類事物的名字, 命名要滿足大駝峰命名法屬性
: 同類事物具備的特征方法
: 同類事物具備的行為
- 注意:
- 主要內容:
對象
: 是由類創建出來的一個具體存在的事物, 可以 直接使用- 說明:由哪一個類創建出來的對象, 就擁有在哪一個 類中定義的屬性和方法
2.面向對象基本語法
2.1 類的定義
-
定義類的步驟
- 定義類
- 通過類創建對象
-
self參數
說明
:由哪一個對象調用的方法, 方法內的self 就是哪一個對象的引用- 注意:
- 在類封裝的方法中,通過self. 訪問對象的屬性和方法
- 在類的外部,通過對象變量名. 訪問對象的屬性和方法
-
實例化:
- 在Python中,由類創建對象的操作又被稱之為實例化
- 通過一個類可以創建多個對象
-
初始化方法
-
當使用類名() 創建對象時,會自動執行以下操作:
- 1)為對象在內存中分配空間——創建對象
- 2)為對象的屬性設置初始值——初始化方法(init)
-
這個初始化方法就是__init__ 方法,init 是對象的內置方法
-
_init_ 方法是專門用來定義一個類具有哪些屬性的方法
-
在初始化方法中增加對象屬性
1. 把希望設置的屬性值,定義成__init__ 方法的參數 2. 在方法內部使用self.屬性= 形參接收外部傳遞的參數 3. 在創建對象時,使用類名(屬性1, 屬性2...) 調用
-
總結:初始化方法就是指的__init__()方法,創建對象的時候會自動調 用,用來定義類具有哪些屬性
-
-
語法格式
# 定義類 class Person:# 類屬性(所有實例共享)species = "Homo sapiens"# 初始化方法(構造函數)def __init__(self, name, age):# 實例屬性self.name = name self.age = age# 實例方法def greet(self):return f"你好,我叫{self.name},今年{self.age}歲"# 創建對象 # 實例化對象(在Python中,由類創建對象的操作又被稱之為實例化) person1 = Person("張三", 25) person2 = Person("李四", 30)# 訪問屬性和方法 print(person1.name) # 張三 print(person2.greet()) # 你好,我叫李四,今年30歲 print(Person.species) # Homo sapiens
-
舉例1
# 需求:小貓愛吃魚,小貓要喝水 class Cat:"""這是一個貓類"""def eat(self):print("小貓愛吃魚")def drink(self):print("小貓在喝水")# 通過Cat類創建tom對象 tom = Cat() tom.drink() tom.eat()print("-"*20) # 通過Cat類創建lazy_cat對象 lazy_cat = Cat() lazy_cat.eat() lazy_cat.drink()# 可以通過直接打印兩個對象變量, 或者使用Python內置函數id(),查看兩個對象的信息 print("-"*20) print(f"tom對象的內存地址{id(tom)}") print(f"lazy_cat對象的內存地址{id(lazy_cat)}")# 運行結果 小貓在喝水 小貓愛吃魚 -------------------- 小貓愛吃魚 小貓在喝水 -------------------- tom對象的內存地址2188968061528 lazy_cat對象的內存地址2188968061808
-
舉例2
# 類名:狗 # 屬性:名字、年齡、身高、體重... # 方法:吃、跑、拿耗子... class Dog(object):def __init__(self, name, age, height, weight):"""狗狗的屬性:param name: 姓名:param age: 年齡:param height: 身高:param weight: 體重"""self.name = nameself.age = ageself.height = heightself.weight = weightdef run(self):