Bir sınıfın gövdesinde, sınıf adı henüz tanımlanmadı, bu nedenle kullanılabilir değil. Sadece sınıfın adını yazamaz mısın? Belki de problem hakkında daha fazla şey söylemelisiniz, böylece sizin için bir çözüm bulabiliriz.
Bu işi sizin için yapacak bir metaclass oluşturacağım. Sınıf oluşturma zamanında çağrılır (kavramsal olarak sınıfın en sonunda: blok) ve yaratılan sınıfı manipüle edebilir. Bunu test etmedim:
cls_name = self.__class__.__name__
DÜZENLEME: As Ned Batcheler
söylediği
, bu işe yaramaz
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'
ben yapmaya çalışıyorum netleştirmek iÇİN: bir yöntemin bir sınıf değişkeni, 'giriş', ** dışını oluşturmak ve başlatmak için gereken **. Her biri, sınıf adı olarak parametre olarak "get_input" olarak adlandırması gereken bir grup küçük sınıfa sahibim. Bunu genelleştirmeye çalışıyorum, böylece her sınıfa gitmek zorunda değilim (100 tane olacak) ve dersin adını yazmam gerekmiyor. –
Tamam, cevabımı yardımcı olması gereken bir metaclass ile güncelledim. –
'InputAssigningMetaclass' içinde' süper 'satırında 'MyType' ne anlama gelir? –