python類別方法和普通方法區別

藏色散人
發布: 2019-07-03 09:45:03
原創
3851 人瀏覽過

python類別方法和普通方法區別

python類別方法和普通方法區別

下面用例子的方式,說明其區別。

首先, 定義一個類,包括2個方法:

class Apple(object):
        def get_apple(self, n):
                print "apple: %s,%s" % (self,n)
        @classmethod
        def get_class_apple(cls, n):
                print "apple: %s,%s" % (cls,n)
登入後複製

類別的普通方法

類別的普通方法,需要類別的實例調用。

a = Apple()
a.get_apple(2)
登入後複製

輸出結果

apple: <__main__.Apple object at 0x7fa3a9202ed0>,2
登入後複製

再看綁定關係:

print (a.get_apple)
<bound method Apple.get_apple of <__main__.Apple object at 0x7fa3a9202ed0>>
登入後複製

類別的普通方法,只能用類別的實例去使用。如果用類別呼叫普通方法,出現以下錯誤:

Apple.get_apple(2)
Traceback (most recent call last): File "static.py", line 22, in <module> Apple.get_apple(2) TypeError: unbound method get_apple() must be called with Apple instance as first argument (got int instance instead)
登入後複製

類別方法

類別方法,表示方法綁定到類別。

a.get_class_apple(3)
Apple.get_class_apple(3)
apple: <class &#39;__main__.Apple&#39;>,3
apple: <class &#39;__main__.Apple&#39;>,3
登入後複製

再看綁定關係:

print (a.get_class_apple) print (Apple.get_class_apple)
登入後複製

輸出結果,用實例和用類別呼叫是一樣的。

<bound method type.get_class_apple of <class &#39;__main__.Apple&#39;>> <bound method type.get_class_apple of <class &#39;__main__.Apple&#39;>>
登入後複製

相關推薦:《Python教學

以上是python類別方法和普通方法區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板