日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python面向对象初识

發(fā)布時間:2023/12/13 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python面向对象初识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

面向對象編程

1.面向對象初步了解

? 面向過程編程與函數編程對比:

s1 = 'ajdsgkaffddha' count = 0 for i in s1:count += 1 print(f'字符串的長度為{count}') # 面向過程編程每計算一次便使用一次for循環(huán)def my_len(s): # 計算數據類型長度的函數,可重復使用count = 0for i in s:count += 1return count print(my_len(s1))

通過對比可知:函數編程較之面向過程編程最明顯的兩個特點:

1,減少代碼的重用性。

2,增強代碼的可讀性。

同樣,函數編程與面向對象變成的對比:

# 函數編程 auth # 認證相關 def register():pass def login():pass# 賬戶相關 def func1():pass def func2():pass# 購物車相關 def shopping_car():pass def check_paid_goods():pass def check_unpaid_goods():pass def save():pass# 面向對象編程 class Auth:def register():passdef login():passclass Account:def func1():passdef func2():passclass Shopping:def shopping_car():passdef check_paid_goods():passdef check_unpaid_goods():passdef save():pass

通過對比可以看出面向對象第一個優(yōu)點:

面向對象編程:是一類相似功能函數的集合,使你的代碼更清晰化,更合理化。

說第二個優(yōu)點之前,先看看什么是面向對象。

面向對象的程序設計的核心是對象(上帝式思維),要理解對象為何物,必須把自己當成上帝,上帝眼里世間存在的萬物皆為對象,不存在的也可以創(chuàng)造出來。

那什么是類?什么是對象?

類:就是具有相同屬性和功能的一類事物。

對象:就是類的具體表現(xiàn)。

簡而言之:類就像制造一類事物的模板,而對象則是制造出來的一個個具體化的實例

2.面向的對象的結構

class Human:mind = "有思想"language = "使用語言"l1 = [] # 靜態(tài)變量def work(self):print("人類會工作")def eat(self):print("人類都需要吃飯") # 動態(tài)方法# class 關鍵字,定義一個類 # Human 類名,類名使用駝峰(CamelCase)命名風格,首字母大寫,私有類可用一個下劃線開頭。 # 類的結構從大方向來說就分為兩部分: # 靜態(tài)變量。 # 動態(tài)方法。

3.從類名的角度研究類

- 類名操作類的屬性

第一種,查看類中的所有內容:類名.__dict__方式。

class Human:mind = "有思想"language = "使用語言"l1 = [] # 靜態(tài)變量def work(self):print("人類會工作")def eat(self):print("人類都需要吃飯") # 動態(tài)方法 print(Human.__dict__) # 查看類中所有的內容 print(Human.__dict__["mind"]) # 查看類中mind屬性的內容 Human.__dict__['mind'] = '無腦' print(Human.__dict__) # 這種做法是錯誤的,__dict__無法修改類中的內容

第二種:萬能的點.

class Human:mind = "有思想" # 第一部分:靜態(tài)屬性 屬性 靜態(tài)變量 靜態(tài)字段dic = {}l1 = []def work(self):print(self)print("人類都會工作") # 第二部分:方法 函數 動態(tài)屬性 print(Human.mind) # 查 Human.mind = "無腦" # 改 print(Human.mind) del Human.mind # 刪 Human.walk = "直立行走" print(Human.walk) # 通過萬能的. 可以增刪查改類中的單個屬性

**總結:如果想查詢類中的所有內容,通過 第一種__dict__方法,如果只是操作單個屬性則用萬能的點的方式。**

- 類名調用類的方法

前提:除了兩個特殊方法:靜態(tài)方法,類方法之外,一般不會通過類名操作一個類中的方法。

class Human:mind = "有思想"dic = {}l1 = []def work(self):print(self)print("人類會工作")def tools(self):print("人類會使用工具") Human.work(111) Human.tools(111) Human.__dict__["work"](111) # 結果: 111 人類會工作 人類會使用工具 111 人類會工作

4.從對象的角度研究類

- 什么是對象

對象是從類中出來的,只要是類名加上(),這就是一個實例化過程,這個就會實例化一個對象。

class Human:mind = "有思想"def __init__(self):print(666)print(self) # <__main__.Human object at 0x00000196E0DA8CF8>def work(self):print("人類會使用工具") obj = Human() # 只要實例化對象,它會在自動執(zhí)行__init__方法 print(obj) # <__main__.Human object at 0x00000196E0DA8CF8> # 結果:# obj地址與self的地址相同 666 <__main__.Human object at 0x00000196E0DA8CF8> <__main__.Human object at 0x00000196E0DA8CF8>

- 實例化對象發(fā)生了三件事

其實實例化一個對象總共發(fā)生了三件事:

  1.在內存中開辟了一個對象空間。

  2.自動執(zhí)行類中的__init__方法,并將這個對象空間(內存地址)傳給了__init__方法的第一個位置參數self。

  3.在__init__ 方法中通過self給對象空間添加屬性。

class Human:mind = "有思想"language = "使用語言"def __init__(self,name,sex,age,hobby):# self和obj兩個變量指向同一個內存地址,下面就是通過self給這個對象空間封裝四個屬性。self.n = nameself.s = sexself.a = ageself.h = hobbyobj = Human("barry","男",18,"運動")

- 對象操作對象屬性

class Human:mind = "有思想"language = "使用語言"def __init__(self,name,sex,age,hobby):# self和obj兩個變量指向同一個內存地址,下面就是通過self給這個對象空間封裝四個屬性。self.n = nameself.s = sexself.a = ageself.h = hobbyobj = Human("barry","男",18,"運動") obj.job = 'IT' # 增 del obj.n # 刪 obj.s = '女' # 改 print(obj.s) # 查 print(obj.__dict__) # 結果: 女 {'s': '女', 'a': 18, 'h': '運動', 'job': 'IT'}

- 對象查看類中的屬性

class Human:mind = "有思想"language = "使用語言"def __init__(self,name,sex,age,hobby):self.n = nameself.s = sexself.a = ageself.h = hobbyobj = Human("barry","男",18,"運動") print(obj.mind) print(obj.language) obj.a = 666 print(obj.a) # 結果: 有思想 使用語言 666

- 對象調用類中的方法

class Human:mind = "有思想"language = "使用語言"def __init__(self,name,sex,age,hobby):self.n = nameself.s = sexself.a = ageself.h = hobbydef work(self):print(self)print("人類會工作")def tools(self):print("人類會使用工具") obj = Human("barry","男",18,"運動") obj.work() obj.tools() # 結果: <__main__.Human object at 0x000001D2414DF7F0> # 實例化對象內存地址 人類會工作 人類會使用工具

類中的方法一般都是通過對象執(zhí)行的(出去類方法,靜態(tài)方法外),并且對象執(zhí)行這些方法都會自動將對象空間傳給方法中的第一個參數self.

5.self是什么?

self其實就是類中方法(函數)的第一個位置參數,只不過解釋器會自動將調用這個函數的對象傳給self。所以咱們把類中的方法的第一個參數約定俗成設置成self, 代表這個就是對象。

6.一個類可以實例化多個對象

class Human:mind = "有思想"language = "使用語言"def __init__(self,name,sex,age,hobby):self.n = nameself.s = sexself.a = ageself.h = hobbydef work(self):print(self)print("人類會工作")def tools(self):print("人類會使用工具") obj1= Human('小胖','男',20,'美女') obj2= Human('相爺','男',18,'肥女') print(obj1,obj2) print(obj1.__dict__) print(obj2.__dict__) # 結果: <__main__.Human object at 0x000001C96A1FF860> <__main__.Human object at 0x000001C96A1FF898> {'n': '小胖', 's': '男', 'a': 20, 'h': '美女'} {'n': '相爺', 's': '男', 'a': 18, 'h': '肥女'}

轉載于:https://www.cnblogs.com/lifangzheng/p/11290599.html

總結

以上是生活随笔為你收集整理的python面向对象初识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。