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...