佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Python類方法總結(jié)講解

Python類方法總結(jié)講解

熱門標(biāo)簽:鐵路電話系統(tǒng) 檢查注冊(cè)表項(xiàng) 網(wǎng)站文章發(fā)布 智能手機(jī) 呼叫中心市場(chǎng)需求 服務(wù)器配置 美圖手機(jī) 銀行業(yè)務(wù)

一、類方法

在類中的函數(shù)稱為類方法。與普通函數(shù)定義稍有區(qū)別。

1.普通方法

1.1 普通方法定義

普通方法與一般函數(shù)的定義稍有區(qū)別的點(diǎn)在于第一個(gè)參數(shù)是self,,指代的意思是指向?qū)嵗龑?duì)象本身。如下圖定義

class Person:
    def __init__(self,name,age):
        # name=對(duì)象的那個(gè)name,age=對(duì)象的那個(gè)age
        self.name=name
        self.age=age

1.2 普通方法調(diào)用

思考一下函數(shù)的調(diào)用是函數(shù)名(),類的方法調(diào)用呢?

類方法調(diào)用必須要借助對(duì)象。調(diào)用方式:對(duì)象.方法名()。

不能直接用類名.方法名(),前面已經(jīng)說(shuō)過(guò)了類中的方法第一個(gè)參數(shù)是self,代表的是實(shí)例對(duì)象本身,所以類是不能直接調(diào)用普通方法的

#實(shí)例化對(duì)象cat
 cat=Animals()
#調(diào)用類中普通方法run
cat.run()

如果使用類名.方法名的時(shí)候會(huì)出現(xiàn):TypeError: run() missing 1 required positional argument: 'self',遺失一個(gè)參數(shù)。

但實(shí)際上我們?cè)偈褂脤?duì)象.方法名()的時(shí)候也沒(méi)有帶self,卻沒(méi)有報(bào)遺失一個(gè)參數(shù)。

原因:當(dāng)我們實(shí)例化對(duì)象的時(shí)候,即cat=Animal()執(zhí)行的時(shí)候已經(jīng)將cat的地址傳給self,此時(shí)self指代的是cat.

2.魔術(shù)方法

2.1 魔術(shù)方法定義

前面普通方法是需要對(duì)象名.方法名()去調(diào)用,而我們的魔術(shù)方法比較特殊,他是在特殊時(shí)刻自動(dòng)觸發(fā),即不需要調(diào)用。

2.2 常見(jiàn)魔術(shù)方法

__init__(self,[參數(shù)名]) 對(duì)象創(chuàng)建時(shí)自動(dòng)調(diào)用的方法
__str__(self,[參數(shù)名]) 函數(shù)有返回值,當(dāng)打印對(duì)象名的時(shí)候自動(dòng)調(diào)用
__del__(self) 當(dāng)刪除引用時(shí)自動(dòng)調(diào)用
__call__(elf,[參數(shù)名]) 當(dāng)執(zhí)行對(duì)象名()時(shí)自動(dòng)調(diào)用即把對(duì)象當(dāng)成函數(shù)使用

 

看上圖我們只是創(chuàng)建了cat對(duì)象,并沒(méi)有調(diào)用__init__方法,但是卻執(zhí)行了方法里面的方法體,是因?yàn)樵趧?chuàng)建對(duì)象時(shí)python自動(dòng)觸發(fā)了。

__init__方法有什么作用:

定義一個(gè)類時(shí),常常要定義屬性和方法,屬性是類的一個(gè)特征,而方法是它能做的事情。

所有的人都有名字和年齡,所以我們要定義一個(gè)Person類,擁有兩個(gè)屬性名字和年齡

如果在類里寫如下圖

class Person():
   name='jimi'
   age=12
   def run(self):
     print('run')
person1=Person()
person2=Person()

那么person1和person2對(duì)象擁有了Person的屬性,但是此刻他倆的屬性一樣,可是并不符合每個(gè)人的特征???每個(gè)人的名字和年齡不一致的。那怎么樣才能創(chuàng)造出對(duì)象不一樣的屬性值,這里就用__init__

class Person:
    def __init__(self,name,age):
        # name=對(duì)象的那個(gè)name,age=對(duì)象的那個(gè)age
        self.name=name
        self.age=age
 
person1=Person('meimei',12)
# 打印person1的屬性  meimei 12
print(person1.name,person1.age)
person2=Person('john',13)
# # 打印person1的屬性  john 13
print(person2.name,person2.age)

__str__是用來(lái)打印對(duì)象時(shí)返回一個(gè)值,所以__str__是有return 語(yǔ)句的。如果不用__str__打印對(duì)象,對(duì)象就是一個(gè)地址

class Person:
    def __init__(self,name,age):
        # name=對(duì)象的那個(gè)name,age=對(duì)象的那個(gè)age
        self.name=name
        self.age=age
    # def __str__(self):
    #     return '這是name:{},這是age:{}'.format(self.name,self.age)
 
person1=Person('meimei',12)  #打印結(jié)果__main__.Person object at 0x0000025C1F932C50>
print(person1)

3.類方法

3.1 類方法定義

class Person:
    def __init__(self,name,age):
        # name=對(duì)象的那個(gè)name,age=對(duì)象的那個(gè)age
        self.name=name
        self.age=age
    # def __str__(self,*krg,**krgs):
    #     return '這是name:{},這是age:{}'.format(self.name,self.age)
    #類方法
    @classmethod
    def test1(cls):
        print('我是類方法')

方法前用裝飾器@classmethod修飾。第一個(gè)參數(shù)為cls代表類

類方法特點(diǎn):類方法里面不能調(diào)用普通方法

3.2 類方法調(diào)用

  1. 對(duì)象名.方法名()
  2. 類名.方法名()

4.靜態(tài)方法

4.1 靜態(tài)方法定義

class Person:
    def __init__(self,name,age):
        # name=對(duì)象的那個(gè)name,age=對(duì)象的那個(gè)age
        self.name=name
        self.age=age
    # def __str__(self):
    #     return '這是name:{},這是age:{}'.format(self.name,self.age)
    def run(self):
        Person.test1()
        Person.test()
        print('我是run')
    @classmethod
    def test1(cls):
        print('我是類方法')
    @staticmethod
    def test(*krgs):
        Person.test1()
        print('我是靜態(tài)方法')

靜態(tài)方法用裝飾器@staticmethod修飾,無(wú)cls,self參數(shù)

4.2 靜態(tài)方法調(diào)用

對(duì)象名.靜態(tài)方法名()

類名.靜態(tài)方法名()

二 總結(jié)

普通方法中:

  1. 可調(diào)用普通方法,使用self.方法名()
  2. 可調(diào)用靜態(tài)方法,使用類名.方法名()
  3. 可調(diào)用類方法,使用類名.類名.方法名()

靜態(tài)方法:

  1. 不可調(diào)用普通方法
  2. 可調(diào)用類方法,類名.方法名()
  3. 可調(diào)用靜態(tài)方法,類名.方法名()

類方法:

  1. 不可調(diào)用普通方法
  2. 可調(diào)用類方法,類名.方法名()
  3. 可調(diào)用靜態(tài)方法,類名.方法名()

到此這篇關(guān)于Python類方法總結(jié)講解的文章就介紹到這了,更多相關(guān)Python類方法總結(jié)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python異常類型以及處理方法匯總
  • 詳解Python魔法方法之描述符類
  • Python繪制分類圖的方法
  • python迭代器自定義類的具體方法
  • Python類型轉(zhuǎn)換的魔術(shù)方法詳解
  • class類在python中獲取金融數(shù)據(jù)的實(shí)例方法
  • Python類綁定方法及非綁定方法實(shí)例解析
  • 利用python批量爬取百度任意類別的圖片的實(shí)現(xiàn)方法

標(biāo)簽:樂(lè)山 上海 新疆 沈陽(yáng) 河南 滄州 長(zhǎng)治 紅河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python類方法總結(jié)講解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    沙河市| 昌乐县| 台北市| 黎川县| 海林市| 崇文区| 托克托县| 益阳市| 兴国县| 前郭尔| 巴里| 剑阁县| 上林县| 浮梁县| 墨玉县| 崇文区| 应城市| 肥城市| 自治县| 邳州市| 板桥市| 中山市| 鹿邑县| 南丰县| 彭州市| 自治县| 花莲县| 南投县| 丰原市| 广东省| 花垣县| 德化县| 洪江市| 章丘市| 河北区| 陆川县| 沾益县| 榆中县| 新闻| 巨鹿县| 班玛县|