2009-02-06 11 views

cevap

133
instance.__class__.__name__ 

örnek: Ayrıca kendileri tuşları olarak, mutlaka classnames

burada
typefunc={ 
    int:lambda x: x*2, 
    str:lambda s:'(*(%s)*)'%s 
} 

def transform (param): 
    print typefunc[type(param)](param) 

transform (1) 
>>> 2 
transform ("hi") 
>>> (*(hi)*) 

sınıfları ile dicti oluşturabilir

>>> class A(): 
    pass 
>>> a = A() 
>>> a.__class__.__name__ 
'A' 
+36

tercihim 'gerçek' oop kullanmak çok daha iyi olurdu: 'tipi (örnek) .__ name__' – Chris

+2

Ne sınıf örneğini oluşturmak için istemiyorsanız? sınıfın adını alabilir misin? (nesne olmadan) – Gabriel

+12

A sınıfı için aşağıdakileri kullanın: 'A .__ name__' – bk0

8

eşleştiren bir dict olduğunu her tür için bir işlev. transform bu işlevi alır ve parametreye uygular.

tabii ki,

+0

+1. Sınıf nesnesi üzerinde bir 'olan' testi, dizelerden daha hızlı olacaktır ve aynı şey denilen iki farklı sınıfla düşmeyecektir. – bobince

+0

Ne yazık ki, bu, alt sınıflarda düz düşüyor, ama "gerçek" OOP ve polimorfizme dair ipucu için +1. –

İlgili konular