Python中類(class)與函數(function)的區別

分享知識  傳遞快樂

 

在 Python 中一直以來都以爲函數(function)和方法(method)是一個東西,但後來發現兩者是不一樣的,那麼兩者之間有什麼區別呢?先看段代碼:

代碼1:

def fun():
    pass

print(fun)

結果如下:

<function fun at 0x000000000248A820>

代碼2:

class Demo():
    
    def fun1(self):
        pass
    
    @classmethod
    def fun2(cls):
        pass
    
    @staticmethod
    def fun3(self):
        pass


demo = Demo()
print(demo)
print(demo.fun1)
print(demo.fun2)
print(demo.fun3)

結果如下:

<__main__.Demo object at 0x00000000006BE3D0>
<bound method Demo.fun1 of <__main__.Demo object at 0x00000000006BE3D0>>
<bound method Demo.fun2 of <class '__main__.Demo'>>
<function Demo.fun3 at 0x0000000002631E50>

由此得出:

  • 在class內定義的普通方法(fun1),因爲它是要面向實例化對象的一個實例方法。
  • 在class內定義的類方法(fun2),它第一個參數必須是cls,並與class本身是綁定關係,它也屬於方法,但不屬於實例方法,可以被實例對象調用。
  • 在class內定義的靜態方法(fun3),它與任何對象都沒有聯繫,等同於是在class外定義的function,它屬於函數。

還可以理解爲與類或實例有綁定關係的 function 稱之爲方法(method),否則叫函數。

 

類(class)與函數(function)的區別:

類(class):類是面向你對象的,class可以保存一此屬性的狀態,同時也起到模板的作用,把一些通用的東西寫進類定義中,也就是在'__init__'中。class有點像是將多個函數進行功能性封裝

函數:函數更像是面向過程編程,更易理解,但是當系統較大時,重複性就會增多。

 

類(class)與函數(function)的優劣勢:

類(class) 函數(function)
方便複用 不宜複用,容易出錯
方便擴展 升級、擴展,都十分複雜
方便維護 不便維護

 

 

 

 

 

 

——————————
如有不足請留言指正
相互學習,共同進步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章