Tôi đang cố gắng viết một "lớp enum" trong python. Một sự phiền toái nhỏ mà tôi hiện đang gặp là không có khả năng xác định các giá trị enum bên trong lớp enum. Đó là, tôi có thể làm điều này:Python 2.x - tạo thể hiện tĩnh của lớp trong cùng một lớp
class Fruit:
def __init__(self, name):
self.name = name
class Fruits(Enum):
Apple = Fruit("apple")
Nhưng tôi muốn làm điều này, hoặc tương đương rõ ràng tương tự:
class Fruit(Enum):
def __init__(self, name):
self.name = name
Apple = Fruit("apple")
Thật không may, tôi nhận được lỗi sau: tên 'trái cây' không được xác định
Quy tắc hiển thị trong trường hợp này là gì? Có bất kỳ thủ thuật Python ít được biết đến có thể giúp tôi không? Tôi muốn một cái gì đó có thể viết trong metaclass của Enum, vì điều đó sẽ làm cho việc sử dụng ít cồng kềnh hơn cho người dùng.
Các metaclass cho Enum không được hiển thị, vì tôi nghĩ nó khá thích hợp. – Liosan
đó là bởi vì 'lớp' chưa hoàn thành được xác định cho đến khi bạn đạt đến cuối khối của nó – jamylak
Sau khi định nghĩa lớp, bạn có thể làm một' Fruit.Apple = Fruit ("apple") 'để tạo một thể hiện và lưu trữ nó như là một thuộc tính lớp. – martineau