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

歡迎訪問 生活随笔!

生活随笔

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

python

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

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

簡(jiǎn)介

三中編程范式

面向過程編程

函數(shù)式編程

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

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

面向過程

優(yōu)點(diǎn):

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

缺點(diǎn):

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

面向?qū)ο?/p>

優(yōu)點(diǎn):

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

性能比面向過程低

定義

類(Class)

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

函數(shù)屬性

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

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

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

方法重寫

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

實(shí)例變量

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

封裝

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

繼承

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

實(shí)例化

創(chuàng)建一個(gè)類的實(shí)例,類的具體對(duì)象。

方法

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

對(duì)象

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

示例

聲明類示例

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

["注釋"]

類體

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

class Text:

'''這是一個(gè)測(cè)試的類!'''

a = '測(cè)試'

def test():

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

print(Text.a)

Text.test()

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

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

測(cè)試

這是一個(gè)測(cè)試函數(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__': '這是一個(gè)測(cè)試的類!', 'a': '測(cè)試', 'test': , '__dict__': , '__weakref__': }

初始化函數(shù)

class Text:

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

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

self.a = name

self.b = age

self.c = gender

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

print(v.__dict__) #生成對(duì)應(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='動(dòng)物'

def __init__(self,name):

self.name = name

def play_ball(self,ball):

print('%s是一個(gè)%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 #刪除

動(dòng)物

植物

水產(chǎn)

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

# -*- coding:utf8 -*-

class Obj:

mold='動(dòng)物'

def __init__(self,name):

self.name = name

def play_ball(self,ball):

print('%s是一個(gè)%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': '動(dòng)物', '__init__': , 'play_ball': , '__dict__': , '__weakref__': , '__doc__': None, 'add_test': }

This is test !!!

My test2 !!!

實(shí)例屬性增刪改查

# -*- coding:utf8 -*-

class Obj:

mold='動(dòng)物'

def __init__(self,name):

self.name = name

def play_ball(self,ball):

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

def test():

print("This is test !!!")

def test2():

print("My test2 !!!")

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

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

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

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

print(P.address)

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

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

print(P.test)

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

小貓是一個(gè)釣魚

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

河邊

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

This is test !!!

特殊類屬性

名稱

釋義

Class.__name__

類的名字

Class.__doc__

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

Class.__base__

類的第一個(gè)父類

Class.__bases__

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

Class.__dict__

類的屬性

Class.__module__

類定義所在的模塊

Class.__class__

示例對(duì)應(yīng)的類

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

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

# -*- coding:utf8 -*-

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

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

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

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

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

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

obj_dic = { #定義的包含動(dòng)作和類型的字典

'name':name,

'addr':addr,

'type':type,

'eat':eat,

'play':play

}

return obj_dic #返回動(dòng)作和類型的字典

return init(name,addr,type) #返回動(dòng)作和類型的對(duì)象

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

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

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

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

小貓正在河邊釣魚

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

面向?qū)ο缶幊酞?dú)有語法去實(shí)現(xiàn)面向?qū)ο笤O(shè)計(jì)

# -*- coding:utf8 -*-

class Test: #定義類的類型

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

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

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

print('%s正在%s%s' %(s1.a,s1.b,s1.c)) #輸出項(xiàng)目?jī)?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)測(cè)試

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

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

小貓正在河邊釣魚

總結(jié)

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

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