tft每日頭條

 > 生活

 > python 面向對象知識點彙總

python 面向對象知識點彙總

生活 更新时间:2025-01-16 16:48:06

python 面向對象知識點彙總?編程語言發展曆程:機器語言 –> 彙編語言 –> 高級語言,下面我們就來說一說關于python 面向對象知識點彙總?我們一起去了解并探讨一下這個問題吧!

python 面向對象知識點彙總(Python面向對象初識)1

python 面向對象知識點彙總

面向過程與面向對象

編程語言發展曆程:

機器語言 –> 彙編語言 –> 高級語言

數學向左,上帝向右。數學家的思維總是傾向于将事物抽象化,尋求程序運行效率的最大化。但是正常人的思維趕不上數學家的思維。而且在硬件運行速度足夠快,内存空間足夠大的今天,已經不特别在意程序的運行速度。人們更在意的是程序的開發速度。面向對象的編程思想應運而生。

面向過程,編程思想更接近于計算機(數學邏輯)

  • 事件為中心:分析出解決問題所需的步驟,然後用函數把這些步驟實現,并按順序調用
  • 執行效率高
  • 代碼複用性差,不利于擴展和維護

面向對象,編程思想更接近于人類

  • 與面向對象相輔相成,在軟件開發過程中,宏觀上,用面向對象來把握事件間複雜的關系
  • 代碼複用性更高,更加簡潔和宏觀,易于擴展和維護,更利于程序設計
  • 性能低于面向過程

舉一個通俗一點的例子,我們想要開一家飯店,如果用面向過程的方法,我們就要自己租房子,買菜,接待客人,做菜,擦桌子,洗盤子等等。如果用面向對象的方法,租房子我們去找中介,買菜去找采購,做菜找廚師,接待客人招服務員等等。

需要指明的是,面向過程和面向對象不屬于任何一門編程語言,它們隻是兩種不同的編程思想。

類和對象

類是對象的抽象,是一類事物的總稱。類是對現實世界進行抽象之後所得到的結果,包含屬性和方法,用于創建對象。

對象是類的具象,是一個具體的事物。通過類進行具象(實例化)之後所得到的一個具體的事物(一塊真實存在于内存中的空間,通過引用來訪問),用來完成具體工作。

先有類,通過類可以創建對象。

數據類型是數據的封裝,函數是算法的封裝。

類是數據和算法的封裝,更高一級。

區分類和對象:

狗 # 類 奧迪A8 # 類 電腦 # 類 我的電腦 # 對象 蘋果 # 類 我現在坐的椅子 # 對象 男人 # 類 我的女朋友 # 對象

創建類

我們使用 class 關鍵字創建一個類,類名要求同變量命名規則類似,同時要求首字母要大寫。創建類時,類名後可以不加括号,如果一定要加括号,記得在裡面加上 object:

# 方法一,類名後面加(object) class GirlFriend(object): sex = '女' # 方法二,類名後什麼都不加 class GirlFriend: sex = '女'

使用僞代碼來表示,我們可以這樣創建一個類:

class 類名(父類): 屬性 方法

類中包含屬性(特征)和方法(行為)。屬性通常是變量,用來表示類是什麼樣的;方法通常是函數,用來體現類能幹什麼。

我們可以通過 .__dict__ 方法查看類中的所有内容:

class GirlFriend: name = '小麗' age = 18 height = 172 weight = 100 money = 10000000000 def chui_tui(self): print('給主子捶腿~') def give_money(self): print('給你100元') self.money -= 100 print(GirlFriend.__dict__)

輸出的結果為:

{'__module__': '__main__', 'name': '小麗', 'age': 18, 'height': 172, 'weight': 100, 'money': 10000000000, 'chui_tui': <function GirlFriend.chui_tui at 0x00000267C73BDB70>, 'give_money': <function GirlFriend.give_money at 0x00000267C73BDAE8>, '__dict__': <attribute '__dict__' of 'GirlFriend' objects>, '__weakref__': <attribute '__weakref__' of 'GirlFriend' objects>, '__doc__': None}在上面的例子中,name、age、height、weight、money 都是類的屬性。chui_tui 和 give_money 是類的方法。

在上面的例子中,name、age、height、weight、money 都是類的屬性。chui_tui 和 give_money 是類的方法。

創建對象

對象的創建和調用方法用僞代碼表示是這樣的:

對象名 = 類名() # 創建一個類對象 對象名.屬性名 # 調用類屬性 對象名.方法名() # 調用類方法 對象名.屬性名 = 屬性值 # 為當前對象添加新屬性

為當前對象添加新方法的方式比較繁瑣,也不常用,僅作了解即可:

import types # 先導入types方法 class Person: # 創建類 def __init__(self, name): self.name = name def eat(self): # 需要添加的函數,注意要使用self作為第一個參數 print('吃東西') xiaoming = Person('小明') # 創建一個對象 xiaoming.eat = types.MethodType(eat, xiaoming) # MethodType方法有兩個參數,第一個參數是要像對象中添加的方法,第二個參數是接受方法的對象 xiaoming.eat() # 此時,對象中已經存在eat方法

類屬性和實例屬性

類屬性

  • 屬于類
  • 當前類的所有對象該屬性的值都一樣
  • 類對象推薦直接用類名訪問,雖然也可以使用對象名訪問(不推薦)
  • 改變類變量的值,會作用于該類所有的實例化對象
  • 可以通過類名在類外添加新的類屬性

具體示例為:

class GirlFriend: name = '小麗' age = 18 height = 172 weight = 100 money = 10000000000 def chui_tui(self): print('給主子捶腿~') def give_money(self): print('給你100元') self.money -= 100 xiaoli = GirlFriend() xiaohong = GirlFriend() print(xiaoli.name, xiaohong.name, GirlFriend.name) GirlFriend.age = 16 print(xiaoli.age, xiaohong.age, GirlFriend.age) GirlFriend.color = 'white' print(xiaoli.color, xiaohong.color, GirlFriend.color)

輸出的結果為:

小麗 小麗 小麗 16 16 16 white white white

實例屬性

實例屬性(實例變量)需要使用初始化方法來定義,用僞代碼表示為:

class 類名: def __init__(self, name): # self隻能在類内使用,在類外使用則無效 self.name = name # 形參可以和示例變量名相同,也常這樣寫

  • 屬于對象
  • 當前類的對象可以擁有各自的屬性值
  • 實例變量隻能通過對象名訪問,無法通過類名直接訪問
  • 實例屬性不僅可以在 __init__ 方法裡添加,還可以在類的其他方法中添加
  • 查詢對象中所有屬性的方法為:對象.__dict__

具體操作實例為:

class GirlFriend: eye_num = 2 sex = '女' def __init__(self, name, age): self.name = name self.age = age def chui_tui(self, num): print(f'{self.name}給大哥捶{num}次腿') self.love = True xiaoli = GirlFriend('小麗', 16) xiaohong = GirlFriend('小紅', 17) xiaoli.chui_tui(10) print(xiaoli.love) 輸出的結果為: 小麗給大哥捶10次腿 True

類對象和實例對象有幾點需要注意:

  • Python 允許通過對象訪問類變量,但無法通過對象修改變量的值
  • 通過對象修改變量的值,不是在給 變量賦值,而是定義新的實例變量
  • 實例變量可以和類變量同名,但是在這種情況下,使用類對象将無法調用示實例變量 ^1
  • 修改一個對象的實例變量,既不會影響類變量的值,也不會影響其他對象的實例變量

上述說明用實例驗證如下:

class GirlFriend: name = '小麗麗' eye_num = 2 sex = '女' def __init__(self, name, age): self.name = name self.age = age def chui_tui(self, num): print(f'{self.name}給大哥捶{num}次腿') self.love = True xiaoli = GirlFriend('小麗', 16) xiaohong = GirlFriend('小紅', 17) print(xiaoli.sex) # 女 print(GirlFriend.__dict__['sex']) # 女 print(xiaoli.__dict__) # {'name': '小麗', 'age': 16} xiaoli.sex = '保密' print(GirlFriend.__dict__['sex']) # 女 print(xiaoli.__dict__) # {'name': '小麗', 'age': 16, 'sex': '保密'} print(xiaohong.name) # 小紅 xiaoli.name = '小莉' print(GirlFriend.__dict__['name']) # 小麗麗 print(xiaoli.__dict__['name']) # 小莉 print(xiaohong.__dict__['name']) # 小紅

輸出的結果為:

女 女 {'name': '小麗', 'age': 16} 女 {'name': '小麗', 'age': 16, 'sex': '保密'} 小紅 小麗麗 小莉 小紅

系統類

Python 無處不對象。比如,我們創建列表就是在進行類的實例化和調用:

list1 = list() # Python中内置了一個list類,這裡直接進行實例化 list1.append(1) # 調用list類中的append方法

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved