Di dalam tubuh kelas, nama kelas belum ditentukan, sehingga tidak tersedia. Bisakah Anda tidak langsung mengetik nama kelasnya? Mungkin Anda perlu menjelaskan lebih lanjut tentang masalah tersebut agar kami dapat menemukan solusi untuk Anda.
Saya akan membuat metaclass untuk melakukan pekerjaan ini untuk Anda. Ini dipanggil pada waktu pembuatan kelas (secara konseptual di akhir kelas: blok), dan dapat memanipulasi kelas yang sedang dibuat. Saya belum menguji ini:
class InputAssigningMetaclass(type):
def __new__(cls, name, bases, attrs):
cls.input = get_input(name)
return super(MyType, cls).__new__(cls, name, bases, newattrs)
class MyBaseFoo(object):
__metaclass__ = InputAssigningMetaclass
class foo(MyBaseFoo):
# etc, no need to create 'input'
class foo2(MyBaseFoo):
# etc, no need to create 'input'