Python3 | 열거 항목에 데코레이터 추가 [중복]

Nov 18 2020

따라서 특정 파일을 읽을 수있는 라이브러리가 있습니다 (파일 레이아웃이 내 통제를 벗어남). 이러한 파일에는 버전이 있으며 각 버전마다 더 많은 기능이 추가됩니다. 일부 기능을 나타내는 Enum이 있습니다. 이제 최신 업데이트를 통해 새 항목이 Enum에 추가되어야합니다. 그러나 사용자가 이전 버전에서 새로운 기능을 사용하려고 할 때 경고 (또는 예외)를 줄 수 있기를 바랍니다.

나는 데코레이터가 @from_version('1.40')다음과 같은 특정 값 및 기능을 표시하는 방법이라고 생각 했습니다. 나는 내 자신의 데코레이터를 만든 적이 없기 때문에 그들에 너무 익숙하지 않습니다.

이것에 대한 마지막 문제는 파일의 버전을 전 세계적으로 사용할 수 없다는 것입니다. (여러 파일을 한 번에 열 수 있어야하므로 정적 인 것을 추가 할 수 없습니다). 나는 장식이있는 경우도 확실하지 않다 그래서 갈 방법입니다.

이제 Enum 항목에 데코레이터를 추가하려고 시도했지만 작동하지 않았습니다.

import enum
>>> def hello_world(f):
...     def decorated(*args, **kwargs):
...         print('Hello World!')
...     return decorated
... 
>>> class A(enum.Enum):
...     @hello_world()  # Tried with and without ()
...     ABC = 1
  File "<input>", line 3
    ABC = 1
    ^
SyntaxError: invalid syntax

그래서 어떻게 이것을 열거 형에 추가 할 수 있는지 궁금합니다. 또한 열거 형에 속성을 추가하여 데코레이터를 추가 할 수 있었지만 속성을 추가해도 작동하지 않았습니다.

TL; DR

특정 enum 항목에 내 데코레이터를 어떻게 추가합니까? 다음과 같이 보일 것으로 예상했습니다.

class EnumClass(Enum):
    @from_version('1.40')
    ENTRY = 0

도움을 주셔서 미리 감사드립니다!

답변

1 EthanFurman Nov 19 2020 at 04:24

원하는 것은 별도의 대답에 있지만 문제를 설명하기 위해 데코레이터는 함수 및 클래스 ( defclass) 에서만 사용할 수 있으며 속성 ( ABC = 1.