(轉載)python 類中 __call__與__init__
阿新 • • 發佈:2018-12-29
轉載自:
https://blog.csdn.net/u011510825/article/details/79770303
請去檢視原文。
最近看到專案中有人用了__call__,google了學習一下
__init__應該大家都知道,還是說一下,就是類的構造器,初始化一個類(建立一個類的例項)
class Student(object):
def __init__(self, name):
self.name = name
呼叫的時候是這樣的
>>> a = Student('jack') >>> a.name 'jack'
__call__的話,它的作用是可以讓 一個類的例項像函式一樣被呼叫,如 可以像函式一樣呼叫上面的a(‘jack2’),相當於a.__call__(‘jack2’)
class Student(object):
def __init__(self, name):
self.name = name
def __call__(self, name):
self.name = name
現在演示一下
>>> a = Student('jack') >>> a.name 'jack' >>> a('jack2’) >>> a.name ‘jack2'
那麼__call__的作用是什麼呢?
__call__ 在那些類的例項經常改變狀態的時候會非常有效。呼叫這個例項是一種改變這個物件狀態的直接和優雅的做法。用一個例項來表達最好不過了。
嗯,沒錯就是
1.為了讓程式碼更優雅和直接
2.方便改變例項中的一些變數(大部分應該改變狀態)