python - 實例方法和類方法


實例方法指的是 只有實例對象才可以 調用的方法。

在類對象中定義實例方法時,第一個形參表示調用該方法的實例對象,其對應的實參由系統自動傳入。
第一個形參的名稱通常是 self ,self不是關鍵字,而是Python約定成俗的命名,你完全可以取別的名字,但建議這么做。


實例方法只能被實例對象所調用,有兩種調用方式:

  1. 在類對象的內部
    語法:self.方法名([實參])

  2. 在類對象外部
    語法:實例對象.方法名([實參])


調用實例方法時,系統自動將調用該實例方法的實例對象作為實參傳遞給第一個形參。
第一個實參傳遞給第二個形參,第二個實參將會傳給第三個形參,以此類推。

實例方法最大的特點就是最少要包含一個 self 參數,該self參數的作用是綁定調用此方法的實例對象。


class MyClass(object):
    # 定義實例方法
    def get_info(self, par1, par2):
        print(par1, par2)

    def get_other(self):
        # 在類對象內部調用實例方法:get_info
        self.get_info(1, 2)

# 實例化
res = MyClass()

res.get_info(3, 4)
res.get_other()



  1. 實例方法的第一個參數通常為self,它用來引用和調用實例。

  2. 在類中定義方法和定義普通的函數沒有太大區別:

class People(object):
    owner = "ren"  # 類屬性

    def __init__(self, name, sex, age=18):
        self.name = name  # 實例屬性
        self.age = age  # 實例屬性
        self.sex = sex

    def voice(self):  # 實例方法
        print("我的名字是{},我{}歲了!".format(self.name, self.age))


p = People("張三", "女")
p.voice()  # 我的名字是張三,我18歲了!


類方法

類方法指類對象中使用裝飾器 @classmethod 進行裝飾的方法。

在類對象定義類方法時,必須使用裝飾器 @classmethod 進行裝飾,第一個形參代表類對象,
其對應的實參由系統自動傳入。

第一個形參的名稱通常是 cls

類方法可以被類對象調用。

語法:類對象.方法名([]實參) 或者 self.方法名([實參])

調用類方法時,系統自動將類對象作為實參傳遞給第一個形參。
第一個實參傳遞給第二個形參...


class MyClass(object):
    # 定義類方法
    @classmethod
    def func_a(cls, par1, par2):
        print(par1, par2)

    @classmethod
    def func_b(cls):
        # 通過類對象調用類方法
        MyClass.func_a(1, 2)  # 1 2
        cls.func_a(1, 2)  # 1 2

    def get_info(self):
        self.func_a(3, 4)


# 通過類對象調用類方法
# MyClass.func_a(8, 9)  # 8 9

# 通過實例對象調用類方法

mc = MyClass()
# mc.func_a(4, 5)  # 4 5
#
mc.func_b()
mc.get_info()  # 3 4


匯總

實例方法

定義:第一個參數必須是實例對象,該參數名一般約定為“self”,通過它來傳遞實例的屬性和方法(也可以傳類的屬性和方法);

調用:只能由實例對象調用。

類方法

定義:使用裝飾器@classmethod。第一個參數必須是當前類對象,該參數名一般約定為“cls”,通過它來傳遞類的屬性和方法(不能傳實例的屬性和方法);

調用:類和實例對象都可以調用。


-----分界線------

我們所看到的回報都有時間延時,

所以看不見的時候才需要信仰,

因為我們總是擔心付出沒有回報。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM