সম্পাদনা: হ্যাঁ, আপনি পারেন; তবে আপনাকে প্রতারণা করতে হবে: বর্তমানে চলমান শ্রেণীর নাম কল স্ট্যাকটিতে উপস্থিত রয়েছে এবং 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'
>>>