這篇文章
定義__call__使乙個類成為可呼叫,相當於過載了()。
class g_dpm(object):
def __init__(self,g):
self.g = g
def __call__(self,t):
return (self.g*t**2)/2
甚至可以這樣使用 print g_dpm(9.8)(2) #g_dpm(9.8)相當於乙個函式,其實他是乙個可呼叫的物件,此時執行的是該物件的__call__方法
另外乙個,實現c#的委託機制
class delegate(set):
def __call__(self,*arg):
for foo in self:
foo(*arg)
通過集合的add就可以把乙個方法(或者是上面那樣的可呼叫物件)增加到這個委託上,這樣在委託呼叫的地方,所有註冊上去的方法都會被呼叫了。而且引數型別可以使不同的
非常cool,越來越喜歡python了,最近在學習設計模式在python中的應用
python 可呼叫物件
compile函式允許程式設計師在執行時刻迅速生成 物件,然後就可以用exec語句或者內建函式eval 來執行這些物件或者對它們進行求值。乙個很重要的觀點是 exec和eval者可以執行字串格式的python 這也是與c 等靜態語言最重要的區別。compile的三個引數都是必須的,第一引數代表了要編...
python 可呼叫物件
compile函式允許程式設計師在執行時刻迅速生成 物件,然後就可以用exec語句或者內建函式eval 來執行這些物件或者對它們進行求值。乙個很重要的觀點是 exec和eval者可以執行字串格式的python 這也是與c 等靜態語言最重要的區別。compile的三個引數都是必須的,第一引數代表了要編...
python的可呼叫物件
這篇文章 定義 call 使乙個類成為可呼叫,相當於過載了 class g dpm object def init self,g self.g g def call self,t return self.g t 2 2 甚至可以這樣使用 print g dpm 9.8 2 g dpm 9.8 相當於...