程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python魔法方法(4):__call __(self, *args, **kwargs) 方法

編輯:Python

Python 的對象天生擁有一些神奇的方法,它們總被雙下劃線所包圍,它們是面向對象的 Python 的一切。它們是可以給你的類增加魔力的特殊方法,如果你的對象實現(重載)了某一個魔法方法,那麼這個方法就會在特殊的情況下自動被 Python 所調用。

功能

允許並定義一個對象像函數一樣被調用時的行為。

參數

self 表示對象本身,args 和 kwargs 表示兩個不定長參數。


返回值

任意數量和類型的對象。

示例

class MyText(object):
def __call__(self, *args, **kwargs):
my_sum = 0
for item in args:
my_sum += item
return my_sum
sample = MyText()
print(sample(1, 2, 3, 4, 5))

__call__()是一種 magic method,在類中實現這一方法可以使該類的實例(對象)像函數一樣被調用。默認情況下該方法在類中是沒有被實現的。使用 callable() 方法可以判斷某對象是否可以被調用。

__call__() 方法的作用其實是把一個類的實例化對象變成了可調用對象,也就是說把一個類的實例化對象變成了可調用對象,只要類裡實現了 __call__() 方法就行。

class People(object):
def __init__(self, name):
self.name = name
def __call__(self):
print("hello " + self.name)
a = People('無忌!')
a.__call__() # 調用方法一
a() # 調用方法二

在編寫類的時候,如果寫了 __call__() 方法,在實例化的對象進行調用的時候就會有 實例對象點__call__() 和 object() 這兩種使用方式效果一樣的現象,即調用方法一和調用方法二效果一樣。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved