내가 예로 바로 갈 것 한 번 경우에도보다 더 이상 실행되도록 표시 없습니다 :실내 장식은 메소드가 호출 여러 번
class Foo:
@execonce
def initialize(self):
print 'Called'
>>> f1 = Foo()
>>> f1.initialize()
Called
>>> f1.initialize()
>>> f2 = Foo()
>>> f2.initialize()
Called
>>> f2.initialize()
>>>
내가 execonce
을 정의하기 위해 노력하지만 방식에서 하나를 쓸 수 없습니다.
PS : 나는 initialize
에 대한 __init__
의 코드를 정의 할 수 없습니다 객체가 초기화 언젠가 후 를 호출 할 수있다.
class Foo:
def __init__(self):
self.initialize_called = False
def initialize(self):
if self.initalize_called:
return
self.initialize_called = True
print 'Called'
이 간단하고 읽기 쉬운 : - CF는 cmdln issue 13
측면 설명 : 두 번째 호출을 무시하지 않는 것이 좋습니다. 대신 예외를 발생시켜야합니다. 호출자가 두 번 초기화하는 경우 잘못된 것이 발생하고이를 자동으로 무시하지 않고보고해야합니다. 물론, 나는 당신의 구체적인 문제를 모른다. –
스테파노, 나는 동의한다. 이것은 나에게 이상하다고 느낀다. 기본적으로, 테스트 케이스는''svn commit ''과 같이''command.do_commit'과''command.do_update'와 같이이 서브 커맨드 메소드를 순차적으로 호출합니다. 그리고이 각각의 서브 커맨드는'initialize' 메소드를 호출해야합니다 (cmdln issue 13 참조). 나는 예외를 발생시키고 싶지 않다. 왜 호출자 (테스트 케이스)는 그런 내부 세부 사항을 알아야 할까? –