python 面向對象知識點彙總?編程語言發展曆程:機器語言 –> 彙編語言 –> 高級語言,下面我們就來說一說關于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 # 形參可以和示例變量名相同,也常這樣寫
具體操作實例為:
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
類對象和實例對象有幾點需要注意:
上述說明用實例驗證如下:
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每日頭條,我们将持续为您更新最新资讯!