python的可呼叫物件

2021-08-25 21:17:32 字數 530 閱讀 7003

這篇文章

定義__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 相當於...