作者KSJ (阿真)
看板Python
标题Re: [问题] zope interface
时间Thu Mar 1 21:17:35 2012
我英文不是很好 弄错文章的意思麻烦指正一下
以我的了解:
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
1F:推 huggie:哎呀我还没有很了解.我现在在关心zeroMQ之後再回来看一下 03/06 12:30