Re: [問題] zope interface

看板Python作者 (阿真)時間13年前 (2012/03/01 21:17), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/4 (看更多)
我英文不是很好 弄錯文章的意思麻煩指正一下 以我的了解: directly provide implement IFooFactory <------------------ Foo ----------------> IFoo ∣ ↑ ∣ make instance ∣ provide ↓ ∣ foo -------------------- ※ 引述《huggie (huggie)》之銘言: : ※ 引述《KSJ (阿真)》之銘言: : : __call__ 就python裡只是讓instance有類似函式呼叫的寫法 : : 例如: : : class a: : : def __call__( self, word ): : : print word : : b = a() : : b("hi") #會print hi : : 文中的__call__看起來只是要註解 __init__ 而使用的招式而已 : 就是這句不懂。註解中的"Create a foo"是說IFactory() 直接會create : 一個 foo 還是implement IFactory 的某個class() 會 create 一個 foo? 看起來是後者 IFooFactory前面是"I" 應該是interface 僅提供註解 不該拿來create東西 那個 __call__ 是用來註解Foo的 __init__方法 因為通常不會寫成 Foo.__init__() 我們比較常寫成 Foo() (使用了__call__) 就好比 IFoo有一個 bar 方法 是用來註解 bar 方法一樣 他跟IFoo是同類的東西 但是拿來註解class 而不是class下的instance 所以稱做 directly provide 因為很常使用... (如下我的文) ↓ : : 而IFooFactory : : 是要讓class(也是一種object)直接 提供(provide) Interface : : 因為跟他之前介紹的 instance 提供 Interface有點不同 所以換個名字吧? : : 文後也說 因為這招很常被使用到 所以有 : : zope.interface.classProvides(IFooFactory) : : 直接讓 Foo2 提供 Interface 的寫法 : 你的意思是 IFooFactory 定義了provide者必須有 invocation 即會製造出 : 一個 foo 的功能, 而 class Foo2 因為 invocation 時會製造出 : foo 的功能因此也是 provide IFooFactory? 調用(invocation)是指 "()"嗎? 嗯~簡單說就是註解class(而不是instance)這樣 我想你應該說得沒錯 foo 的功能因此"就"是 provide IFooFactory (稱 directly provide) : : 這個你可能要看看文章蠻前面有解說 implememt 與 provide 的意思 : 前面那邊很單純我懂.. : 就是這個例子不懂。 : : 你說的第一句是 我上面最後提的寫法 : : implements(XXX) 是指說 : : 若把implements寫在class裡 那class的instance就會provide XXX : 這邊懂。 : : 跟class directProvide interface 意思差蠻多的 : 這邊不懂. 註解class本身(directly provide) 而不是註解class下的instance(implement) 這是我看文章的了解 不過還不知道這是做什麼用的(orz... 也不一定對 希望你了解以後可以分享心得給大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.176.140.46

03/06 12:30, , 1F
哎呀我還沒有很瞭解.我現在在關心zeroMQ之後再回來看一下
03/06 12:30, 1F
文章代碼(AID): #1FJtRpNo (Python)
文章代碼(AID): #1FJtRpNo (Python)