溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何理解Python中關(guān)于面向?qū)ο蟾拍?/h1>
發(fā)布時(shí)間:2021-10-08 15:28:09 來源:億速云 閱讀:133 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“如何理解Python中關(guān)于面向?qū)ο蟾拍睢?,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何理解Python中關(guān)于面向?qū)ο蟾拍睢卑?

面向?qū)ο缶幊痰?個(gè)非常重要的概念:
類和對(duì)象

對(duì)象是面向?qū)ο缶幊痰暮诵模谑褂脤?duì)象的過程中,為了將具有共同特征和行為的一組對(duì)象抽象定義,提出了另外一個(gè)新的概念——類。

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

類是由三部分構(gòu)成:

類的名稱
類的屬性
類的方法

格式如下:

# 類名
class Func(object):
    # 類的屬性
    i=123
    # 類的方法
    def f(self):
        print('6666')

# 實(shí)例化類
a=Func()
# 訪問類的屬性
print(a.i)
# 調(diào)用類的方法
a.f()

object 是Python 里所有類的最頂級(jí)父類;
類名 的命名規(guī)則按照"大駝峰命名法";
f 是一個(gè)實(shí)例方法,第一個(gè)參數(shù)一般是self,表示實(shí)例對(duì)象本身,當(dāng)然了可以將self換為其它的名字,其作用是一個(gè)變量 這個(gè)變量指向了實(shí)例對(duì)象

魔法方法

1.init

Python 的類里提供的,兩個(gè)下劃線開始,兩個(gè)下劃線結(jié)束的方法,就是魔法方法,init()就是一個(gè)魔法方法,通常用來做屬性初始化 或 賦值 操作(作用)。
如果類面沒有寫__init__方法,Python會(huì)自動(dòng)創(chuàng)建,但是不執(zhí)行任何操作
如果為了能夠在完成自己想要的功能,可以自己定義__init__方法
所以一個(gè)類里無論自己是否編寫__init__方法 一定有__init__方法

案例:

# 類名
class Func(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    # 類的屬性
    i=123
    # 類的方法
    def f(self):
        print('我的名字叫%s,今年%d歲了'%(self.name,self.age))

# 實(shí)例化類
a=Func('大飛',24)
# 訪問類的屬性
print(a.i)
# 調(diào)用類的方法
a.f()

init(self)中,默認(rèn)有1個(gè)參數(shù)名字為self,如果在創(chuàng)建對(duì)象時(shí)傳遞了2個(gè)實(shí)參,那么__init__(self)中出了self作為第一個(gè)形參外還需要2個(gè)形參,例如__init__(self,x,y)

注意:
1). 在類內(nèi)部獲取 屬性 和 實(shí)例方法,通過self獲取;
2). 在類外部獲取 屬性 和 實(shí)例方法,通過對(duì)象名獲取。
3). 如果一個(gè)類有多個(gè)對(duì)象,每個(gè)對(duì)象的屬性是各自保存的,都有各自獨(dú)立的地址;
4). 但是實(shí)例方法是所有對(duì)象共享的,只占用一份內(nèi)存空間。類會(huì)通過self來判斷是哪個(gè)對(duì)象調(diào)用了實(shí)例方法。

2.str

str 如果一個(gè)類中定義了__str__方法,在打印對(duì)象時(shí),默認(rèn)輸出該方法的返回值,沒有定義會(huì)返回對(duì)象的地址

class Func(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age

a=Func('大飛',24)
print(a)

如何理解Python中關(guān)于面向?qū)ο蟾拍?></p><p>調(diào)用__str__方法,輸出結(jié)果是該方法的返回值</p><pre class=class Func(object):     def __init__(self,name,age):         self.name=name         self.age=age     def __str__(self):         return '我的名字叫%s,今年%d歲了'%(self.name,self.age) a=Func('大飛',24) print(a)


總結(jié):實(shí)例化對(duì)象時(shí)會(huì)調(diào)用__str__()方法,如果沒有定義__str__()方法會(huì)打印一個(gè)對(duì)象的地址,如果定義__str__()并且有返回值,就會(huì)打印其中的返回值

3.del

當(dāng)刪除對(duì)象時(shí),python解釋器會(huì)默認(rèn)調(diào)用一個(gè)方法,這個(gè)方法為__del__()方法

class Dog(object):
    def __init__(self,name):
        self.name =name
        print("__init__方法被調(diào)用")
    def __del__(self):
        print("__del__方法被調(diào)用")
        print("python解釋器開始回收%s對(duì)象了" % self.name)
p = Dog('Bob')
del p

到此,相信大家對(duì)“如何理解Python中關(guān)于面向?qū)ο蟾拍睢庇辛烁畹牧私?,不妨來?shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)
AI