CHỈNH SỬA: Có, bạn có thể; nhưng bạn phải gian lận: Tên lớp hiện đang chạy hiện diện trên ngăn xếp cuộc gọi và traceback
mô-đun cho phép bạn truy cập ngăn xếp.
>>> import traceback
>>> def get_input(class_name):
... return class_name.encode('rot13')
...
>>> class foo(object):
... _name = traceback.extract_stack()[-1][2]
... input = get_input(_name)
...
>>>
>>> foo.input
'sbb'
Tuy nhiên, tôi sẽ không làm điều này; Câu trả lời ban đầu của tôi vẫn là sở thích của riêng tôi như một giải pháp. Câu trả lời ban đầu:
Có lẽ giải pháp đơn giản nhất là sử dụng một người trang trí, tương tự như câu trả lời của Ned liên quan đến kính thiên thạch, nhưng ít mạnh hơn (người trang trí có khả năng ma thuật đen, nhưng kính thiên văn có khả năng ma thuật đen cổ đại, huyền bí )
>>> def get_input(class_name):
... return class_name.encode('rot13')
...
>>> def inputize(cls):
... cls.input = get_input(cls.__name__)
... return cls
...
>>> @inputize
... class foo(object):
... pass
...
>>> foo.input
'sbb'
>>>