【发布时间】:2010-11-08 12:13:45
【问题描述】:
我直接上例子:
class Foo:
@execonce
def initialize(self):
print 'Called'
>>> f1 = Foo()
>>> f1.initialize()
Called
>>> f1.initialize()
>>> f2 = Foo()
>>> f2.initialize()
Called
>>> f2.initialize()
>>>
我尝试定义execonce,但无法编写与方法一起使用的定义。
PS:我无法在__init__ 中定义代码,因为initialize 必须在对象初始化之后的某个时间调用。 cf - cmdln issue 13
【问题讨论】:
-
横向评论:我建议你不要忽略第二个电话。相反,您应该引发异常。如果调用者正在初始化两次,则说明发生了错误,您应该报告它而不是默默地忽略它。当然,我不知道你的具体问题。
-
Stefano,我同意 .. 这对我来说也很奇怪。基本上,测试用例依次调用这些子命令方法(例如:'svn commit'):
command.do_commit和command.do_update。而且这些子命令中的每一个都必须调用initialize方法(参见cmdln issue 13)。我不想引发异常......为什么调用者(测试用例)需要了解这样的内部细节?
标签: python class methods decorator