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 '__main__.Apple'>,3 apple: <class '__main__.Apple'>,3
再看綁定關係:
print (a.get_class_apple) print (Apple.get_class_apple)
輸出結果,用實例和用類別呼叫是一樣的。
<bound method type.get_class_apple of <class '__main__.Apple'>> <bound method type.get_class_apple of <class '__main__.Apple'>>
相關推薦:《Python教學》
以上是python類別方法和普通方法區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!