संपादित करें: हाँ, आप कर सकते हैं; लेकिन आपको धोखा देना होगा: वर्तमान में चल रहा वर्ग नाम कॉल स्टैक पर मौजूद है, और traceback
मॉड्यूल आपको स्टैक तक पहुंचने की अनुमति देता है।
>>> 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'
हालाँकि, मैं ऐसा नहीं करूँगा; मेरे मूल उत्तर अभी भी समाधान के रूप में मेरी अपनी प्राथमिकता है। मूल उत्तर:
शायद सबसे सरल समाधान एक डेकोरेटर का उपयोग करना है, जो नेड के उत्तर के समान है, जिसमें मेटाक्लासेस शामिल हैं, लेकिन कम शक्तिशाली (डेकोरेटर काले जादू करने में सक्षम हैं, लेकिन मेटाकालेज़ प्राचीन, मनोगत काले जादू में सक्षम हैं )
>>> 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'
>>>