Python3 | เพิ่มมัณฑนากรในรายการ enum [ซ้ำ]

Nov 18 2020

ฉันมีไลบรารีที่สามารถอ่านไฟล์บางไฟล์ได้ (เลย์เอาต์ไฟล์อยู่นอกเหนือการควบคุมของฉัน) ไฟล์เหล่านี้มีเวอร์ชันและมีการเพิ่มคุณสมบัติเพิ่มเติมในแต่ละเวอร์ชัน ฉันมี Enums ที่แสดงถึงคุณสมบัติบางอย่าง ขณะนี้มีการอัปเดตล่าสุดควรเพิ่มรายการใหม่ใน Enum แต่ฉันต้องการเตือนผู้ใช้ (หรือข้อยกเว้น) เมื่อพวกเขาพยายามใช้คุณสมบัติที่ใหม่กว่าในเวอร์ชันเก่า

ฉันคิดว่ามัณฑนากรอาจเป็นหนทางไปโดยทำเครื่องหมายค่าและฟังก์ชันบางอย่างเช่น: @from_version('1.40')หรืออะไรทำนองนั้น ฉันไม่เคยสร้างมัณฑนากรของตัวเองดังนั้นฉันจึงไม่คุ้นเคยกับพวกเขามากนัก

ปัญหาสุดท้ายของปัญหานี้คือเวอร์ชันของไฟล์ไม่สามารถใช้ได้ทั่วโลก (ฉันไม่สามารถเพิ่มสิ่งที่เป็น static-ish ได้เนื่องจากควรเปิดไฟล์หลายไฟล์พร้อมกันได้) ดังนั้นผมไม่แน่ใจว่าแม้ว่าตกแต่งเป็นวิธีที่จะไป

ตอนนี้ฉันพยายามเพิ่มมัณฑนากรในรายการ 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

ดังนั้นฉันจึงสงสัยว่าฉันจะเพิ่มสิ่งนี้ลงใน enum ได้อย่างไรฉันก็ลองเพิ่มคุณสมบัติใน enum เพื่อที่ฉันจะได้เพิ่มมัณฑนากรเข้าไป แต่ถึงจะเพิ่มคุณสมบัติก็ไม่ได้ผล ...

TL; ดร

ฉันจะเพิ่มมัณฑนากรของตัวเองลงในรายการ enum เฉพาะได้อย่างไร ฉันคาดว่าจะมีลักษณะดังนี้:

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

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือ!

คำตอบ

1 EthanFurman Nov 19 2020 at 04:24

สิ่งที่คุณต้องการคือคำตอบแยกต่างหาก แต่เพื่ออธิบายปัญหาที่คุณพบ - มัณฑนากรใช้ได้เฉพาะกับฟังก์ชันและคลาสเท่านั้น ( defและclass) และไม่สามารถใช้กับแอตทริบิวต์ (สิ่งต่างๆเช่นABC = 1.