可呼叫物件的魔術方法, call

2021-09-03 08:14:48 字數 807 閱讀 5050

class coordiate(object):

def __init__(self, x= 0, y= 0):

self.x = x

self.y = y

def __call__(self, x, y):

# 實現__call__方法後,建立的 例項名() 就是呼叫__call__()方法。

self.x = x

self.y = y

def __str__(self):

return f"(,)"

c1 = coordiate(1, 2)  

# 如果沒有這一步,先建立乙個類例項,後面的c1(2, 3)會報錯。

print(c1)

c1(2, 3) # 只有實現了__call__()方法,這裡才不會報錯

print(c1)

__call__()方法的另一種用途,我在另一篇筆記中提到過(原理未知,不求甚解,總之可以這樣用,讓if語句看起來簡化不少,尤其用在非巢狀格式的多分支語句的時候):

def f1():

print("--1--")

def f2():

print("--2--")

def f3():

x = input("請選擇:")

if x in ["1", "2"]:

.get(x).__call__()

f3()

請選擇:2

--2--

請選擇:1

--1--

可呼叫物件

我們可以向演算法傳遞任何類別的可呼叫物件 函式,函式指標,過載了函式呼叫運算子的類,lambda 表示式,bind 函式。函式物件 1 如果類過載了函式呼叫運算子,則我們可以像使用函式一樣使用該類的物件。因為這樣的類同時也能儲存狀態,所以與普通函式相比他們更加靈活。例 struct absint i...

可呼叫物件

在python中可以用callable函式檢視乙個物件是不是可呼叫 1 deffn 2print ha ha ha 34callable fn 5 true 乙個類被例項化後,這個例項物件是乙個不可呼叫物件 1 class fun 2def init self,name 3 self.name na...

魔術方法 call 和

php 5.3 後新增了 call 與 callstatic 魔法方法。call 當要呼叫的方法不存在或許可權不足時,會自動呼叫 call 方法。callstatic 當呼叫的靜態方法不存在或許可權不足時,會自動呼叫 callstatic方法。call funcname,arguments call...