1. 程式人生 > >python中的類方法(classmethod)與靜態方法(staticmethod)

python中的類方法(classmethod)與靜態方法(staticmethod)

任何一種型別的方法,都可以用類或者物件來呼叫
那什麼時候使用物件方法,什麼時候使用類方法和靜態方法?

  1. 在絕大部分情況下,我們的方法都會宣告成 物件方法
  2. 如果我們希望用類來處理這個方法,或者不希望某一個屬性值不因為物件 而改變的時候,就可以用類方法
  3. 靜態方法的使用絕大部分都可以用例項方法或者類方法來替代
class People(object):
    # 類屬性
    count = 0
    size = 0
    def __init__(self, name='', age=''):
        # 物件屬性
        self.name = name
        self.age = age


    # 物件方法
    def say(self):
        print('hai')


    # 類方法
    @classmethod
    def classFun(cls):
        print('Hello,我是類方法')


     # 靜態方法
    @staticmethod
    # 不需要指定self或者cls來呼叫
    def method():
        print('我是靜態方法')


People.classFun()   # Hello,我是類方法
People.method()     # 我是靜態方法

p1 = People()
p1.classFun()       # Hello,我是類方法
p1.method()         # 我是靜態方法


p1.say()            # hai

People.say(p1)      # hai
People.say(People()) # hai