1、面向過程編程
核心是"過程"二字,過程指的是解決問題的步驟,即先干什么再干什么
基于該思想編寫程序就好比在編寫一條流水線,是一種機械式的思維方式
優(yōu)點:復(fù)雜的問題流程化、進而簡單化
缺點:可擴展性差
2、面向?qū)ο?br> 核心"對象"二字,對象指的是特征與技能的結(jié)合體,
基于該思想編寫程序就好比在創(chuàng)造一個世界,你就是這個世界的上帝,是一種
上帝式的思維方式
優(yōu)點:可擴展性強
缺點:編程的復(fù)雜度高于面向過程
重點:面向?qū)ο蟮暮诵捏w現(xiàn)是將數(shù)據(jù)和處理數(shù)據(jù)的程序封裝到對象中
'''
# 函數(shù)與方法:都是解決問題的功能
# 函數(shù):通過函數(shù)名直接調(diào)用
# 方法:通過附屬者.語法來調(diào)用
# 變量:通過變量名訪問變量值
# 屬性:通過附屬者.語法來訪問變量值
名稱空間操作
# 所有能產(chǎn)生名稱空間對應(yīng)的對象(存放地址的變量)有__dict__值
# __dict__指向的就是附屬對象的名稱空間
import re
print(re.__dict__)
re.__dict__['name'] = 're模塊'
print(re.__dict__['name'])
re.__dict__['action'] = lambda x: x
print(re.__dict__['action'](1000))
def fn():
pass
print(fn.__dict__)
fn.name = 'fn函數(shù)'
print(fn.name)
def test():
print("可以成為fn功能的函數(shù)")
fn.action = test
fn.action()
類與對象的概念
# 類:具有相同特征與行為個體集合的抽象
# 對象:有特征、行為的具體個體。就是類的具體體現(xiàn)
# 區(qū)別:兩個人同時思考一個名字,想到的一定是同一個物體,就一定是對象,反之一定是類
語法
# 類的聲明:
'''
class 類名: # class定義類語法的關(guān)鍵字
pass
'''
# 對象的產(chǎn)生: 對象的實例化
'''
對象1 = 類名()
對象2 = 類名()
對象3 = 類名()
'''
# 類與對象都有自己獨立的名稱空間,每一個被實例化出來的對象,名稱空間也是各自獨立
# 所以類與對象都能額外添加 屬性(變量) 和 方法(函數(shù))
# 重點:類一旦被加載(隨著所屬文件的加載就加載),就會進入類的內(nèi)部執(zhí)行類中的所有代碼
對象查找屬性的順序
class People:
# 類自帶(不同在外界額外添加)的屬性與方法
identify = '人類'
def sleep(self):
print('睡覺')
p1 = People()
p2 = People()
p1.identify = '新人類'
print(p1.identify) # 訪問自己的
p1.__dict__.clear() # 刪除自己的后
print(p1.identify) # 訪問類的
print(p2.identify) # p2沒有自己的,訪問類的
# 重點:屬性的訪問順序:優(yōu)先加載自身的名字,如果沒有再考慮類的
對象獨有的名稱空間: 在產(chǎn)生對象時就賦初值
class Student:
def __init__(self, stu_name, sex):
self.name = stu_name
self.sex = sex # 通常建議參數(shù)名與新增的屬性名同名
stu = Student('Bob', 'male') # 實例化對象
print(stu.name, stu.sex)
'''
# __init__方法會在實例化對象時被調(diào)用
# 1.會為實例化的對象形成空的名稱空間
# 2.就是一個方法,可以被傳參,在 類名(實參) 這種方式下調(diào)用并傳參 __init__(self, 形參)
# 3.第一個self就是要產(chǎn)生的當(dāng)前對象
# 重點:在方法內(nèi)部,形參拿到了實參值,利用self.屬性名 = 形參 = 實參值,對對象的名稱空間添加屬性
'''
類中方法的第一個默認參數(shù):對象方法
class A:
# 對象方法
def test(self, num):
pass
a = A()
# 調(diào)用方法
# 二級優(yōu)化
a.test(10)
# 一級優(yōu)化
A.test(a, 10)
# 實現(xiàn)原理
A.__dict__['test'](a, 10)
# 總結(jié):對象a傳遞給self,數(shù)字10傳遞給num
# 重點:方法的第一個參數(shù)一定是調(diào)用該方法的對象
類中@classmethod修飾的方法:類方法
class Tool:
@classmethod
def add(cls, n1, n2): # 統(tǒng)一類與對象都可以調(diào)用類方法,一定有默認傳入第一個參數(shù)
return n1 n2
# 建議
Tool.add(10, 20) # 默認第一個傳入自身 - Tool
# 不建議
tool = Tool()
tool.add(100, 200) # 默認第一個傳入自身所屬類 - tool.__class__
來源:
https://www.icode9.com/content-4-306001.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。