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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 面向对象编程简称_Python基础-面向对象编程

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

簡介

三中編程范式

面向過程編程

函數(shù)式編程

面向?qū)ο缶幊?/p>

面向?qū)ο蠛兔嫦蜻^程對比

面向過程

優(yōu)點:

性能比面向?qū)ο蟾?#xff0c;因為類調(diào)用時需要實例化,開銷比較大,比較消耗資源;比如單片機、嵌入式開發(fā)、Linux/Unix等一般采用面向過程開發(fā),性能是最重要的因素。

缺點:

沒有面向?qū)ο笠拙S護(hù)、易復(fù)用、易擴展

面向?qū)ο?/p>

優(yōu)點:

易維護(hù)、易復(fù)用、易擴展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特性,可以設(shè)計出低耦合的系統(tǒng),使系統(tǒng)更加靈活、更加易于維護(hù) - 缺點:

性能比面向過程低

定義

類(Class)

用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。

函數(shù)屬性

即函數(shù),在面向?qū)ο罄锝y(tǒng)稱為方法

數(shù)據(jù)屬性

即變量,類變量或者實例變量用于處理類及其實例對象的相關(guān)的數(shù)據(jù)。

方法重寫

如果從父類繼承的方法不能滿足子類的需求,可以對其進(jìn)行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。

實例變量

定義在方法中的變量,只作用于當(dāng)前實例的類。

封裝

描述了對數(shù)據(jù)/信息進(jìn)行隱藏的觀念,它對數(shù)據(jù)屬性提供接口和訪問函數(shù)。

繼承

即一個派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個派生類的對象作為一個基類對象對待。例如,有這樣一個設(shè)計:一個Dog類型的對象派生自Animal類,這是模擬"是一個(is-a)"關(guān)系(例圖,Dog是一個Animal)。

實例化

創(chuàng)建一個類的實例,類的具體對象。

方法

類中定義的函數(shù)。

對象

通過類定義的數(shù)據(jù)結(jié)構(gòu)實例。對象包括兩個數(shù)據(jù)成員(類變量和實例變量)和方法。

示例

聲明類示例

class 類名(可選參數(shù)):

["注釋"]

類體

數(shù)據(jù)&函數(shù)屬性調(diào)用

class Text:

'''這是一個測試的類!'''

a = '測試'

def test():

print("這是一個測試函數(shù)(方法)!")

print(Text.a)

Text.test()

print(dir(Text)) #查看屬性名稱

print(Text.__dict__) #查看類屬性的字典

測試

這是一個測試函數(shù)(方法)!

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'a', 'test']

{'__module__': '__main__', '__doc__': '這是一個測試的類!', 'a': '測試', 'test': , '__dict__': , '__weakref__': }

初始化函數(shù)

class Text:

'''這是一個測試的初始化函數(shù)!'''

def __init__(self,name,age,gender):

self.a = name

self.b = age

self.c = gender

v = Text("小明","18歲","男") #實例化生成的對象

print(v.__dict__) #生成對應(yīng)的字典

print(v.a,v.b,v.c) #字典取值

封裝

==即把代碼隱藏起來,并非真正隱藏,而是一種使用接口調(diào)用“隱藏”類的約定==

隱藏調(diào)用,_開頭的函數(shù)

class Test:

_num = "this is test!!!"

P = Test()

print(P._num)

隱藏調(diào)用,__開頭的函數(shù)

class Test:

__num = "this is test!!!"

P = Test()

print(P._Test__num)

增刪改查

==注:類底層以字典形式記錄保存數(shù)據(jù),切勿以字典形式修改數(shù)據(jù)==

數(shù)據(jù)屬性增刪改查

# -*- coding:utf8 -*-

class Obj:

mold='動物'

def __init__(self,name):

self.name = name

def play_ball(self,ball):

print('%s是一個%s' %(self.name,ball))

print(Obj.mold) #查看

Obj.mold = '植物' #修改

print(Obj.mold) #顯示修改后內(nèi)容

Obj.aquatic = "水產(chǎn)" #增加

print(Obj.aquatic) #顯示增加后的內(nèi)容

del Obj.aquatic #刪除

動物

植物

水產(chǎn)

函數(shù)屬性增刪改查

# -*- coding:utf8 -*-

class Obj:

mold='動物'

def __init__(self,name):

self.name = name

def play_ball(self,ball):

print('%s是一個%s' %(self.name,ball))

def test():

print("This is test !!!")

def test2():

print("My test2 !!!")

Obj.add_test =test #新增

print(Obj.__dict__) #確認(rèn)是否加入類

Obj.add_test() #查看

Obj.play_ball = test2 #修改

Obj.play_ball() #修改后查看確認(rèn)

del Obj.add_test #刪除

{'__module__': '__main__', 'mold': '動物', '__init__': , 'play_ball': , '__dict__': , '__weakref__': , '__doc__': None, 'add_test': }

This is test !!!

My test2 !!!

實例屬性增刪改查

# -*- coding:utf8 -*-

class Obj:

mold='動物'

def __init__(self,name):

self.name = name

def play_ball(self,ball):

print('%s是一個%s' %(self.name,ball))

def test():

print("This is test !!!")

def test2():

print("My test2 !!!")

P = Obj('小貓') #生成實例

P.play_ball('釣魚') #執(zhí)行查看

P.address = '河邊' #實例增加數(shù)據(jù)屬性

print(P.__dict__) #查看實例增加的數(shù)據(jù)屬性

print(P.address)

P.test = test #實例增加函數(shù)屬性

print(P.__dict__) #查看示例增加的函數(shù)屬性

print(P.test)

P.test() #執(zhí)行測試

小貓是一個釣魚

{'name': '小貓', 'address': '河邊'}

河邊

{'name': '小貓', 'address': '河邊', 'test': }

This is test !!!

特殊類屬性

名稱

釋義

Class.__name__

類的名字

Class.__doc__

類的文檔(聲明注釋內(nèi)容)

Class.__base__

類的第一個父類

Class.__bases__

類的所有弗雷構(gòu)成的元組

Class.__dict__

類的屬性

Class.__module__

類定義所在的模塊

Class.__class__

示例對應(yīng)的類

面向?qū)ο笤O(shè)計

數(shù)據(jù)類型余動作的結(jié)合

# -*- coding:utf8 -*-

def production(name,addr,type): #函數(shù)定義的類型

def eat(obj): #函數(shù)定義的動作1

print('在%s有一個%s的%s' %(obj['addr'],obj['type'],obj['name'])) #輸出項目內(nèi)容,以字典形式傳值,接受項也需要是字典

def play(obj): #函數(shù)定義的動作2

print('%s正在%s%s' %(obj['name'],obj['addr'],obj['type'])) #輸出項目內(nèi)容,以字典形式傳值,接受項也需要是字典

def init(name,addr,type): #初始化函數(shù)把動作和類型放置一起

obj_dic = { #定義的包含動作和類型的字典

'name':name,

'addr':addr,

'type':type,

'eat':eat,

'play':play

}

return obj_dic #返回動作和類型的字典

return init(name,addr,type) #返回動作和類型的對象

s1 = production('小貓','河邊','釣魚') #生產(chǎn)測試

print(s1) #生產(chǎn)類型,輸出包含動作和類型的的項目字典

s1['play'](s1) #總體執(zhí)行,包含動作和類型,嵌套函數(shù)以字典傳值所以函數(shù)參數(shù)為原函數(shù)執(zhí)行的字典結(jié)果

{'name': '小貓', 'addr': '河邊', 'type': '釣魚', 'eat': .eat at 0x0000024E1B3C41E0>, 'play': .play at 0x0000024E1B3C42F0>}

小貓正在河邊釣魚

面向?qū)ο缶幊?/p>

面向?qū)ο缶幊酞氂姓Z法去實現(xiàn)面向?qū)ο笤O(shè)計

# -*- coding:utf8 -*-

class Test: #定義類的類型

def eat(obj): #函數(shù)定義的動作1

print('在%s有一個%s的%s' %(s1.b,s1.c,s1.a)) #輸出項目內(nèi)容,從初始化函數(shù)中調(diào)用

def play(obj): #函數(shù)定義的動作2

print('%s正在%s%s' %(s1.a,s1.b,s1.c)) #輸出項目內(nèi)容,從初始化函數(shù)中調(diào)用

def __init__(self,name,addr,type): #初始化函數(shù)

self.a = name

self.b = addr

self.c = type

s1 = Test('小貓','河邊','釣魚') #生產(chǎn)測試

print(s1) #生產(chǎn)類型,輸出實例化對象

s1.play() #總體執(zhí)行,包含動作和類型

小貓正在河邊釣魚

總結(jié)

以上是生活随笔為你收集整理的python 面向对象编程简称_Python基础-面向对象编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。