Python中的實例方法、類方法、靜態方法的區別

1、關於參數的區別

        實例方法:定義實例方法是最少有一個形參 —> 實例對象,通常用self

        類方法:定義類方法的時候最少有一個形參 —> 類對象,通常用cls

        靜態方法:定義靜態方法的時候可以不定義形參

2、關於方法定義時候添加裝飾器的區別

        實例方法:不需要添加裝飾器

        類方法:需要添加裝飾器 —-> @classmethod

        靜態方法:需要添加裝飾器 —> @staticmethod

3、調用:

        1.實例方法可以通過對象直接調用

        2.但是用類名調用的時候,需要創建一個對象,並且在傳遞參數的時候要將對象傳遞進去

        3.類方法可以通過類名直接調用,也可以通過對象來調用

        4.靜態方法可以通過類名直接調用,也可以通過對象來調用

4、補充

  1.靜態方法不可以繼承。  

  2.類方法不能訪問實例變量,只能訪問類變量

class Dog(object):
    food = "gutou"
    age = "1"
    def __init__(self, name):
        self.NAME = name

    def eat(self,age): # 可以使用實例方法
        # print(self.NAME)
        print(age)
        print(self.food)
    
    @classmethod
    def eat1(cls, age): # 只能是類中的變量
        # print(cls.NAME)
        cls.food = "tang"
        
    @staticmethod
    def print_1():
        print(Dog.food, Dog.age)