isinstance()
işlevlerinin çoğunu çağırmaktan kaçınmak istiyorum, bu nedenle örnek değişken için bir dize olarak somut sınıf adını almanın bir yolunu arıyorum.Beton sınıfı adı nasıl bir dizge olarak alınır?
Herhangi bir fikrin var mı?
isinstance()
işlevlerinin çoğunu çağırmaktan kaçınmak istiyorum, bu nedenle örnek değişken için bir dize olarak somut sınıf adını almanın bir yolunu arıyorum.Beton sınıfı adı nasıl bir dizge olarak alınır?
Herhangi bir fikrin var mı?
instance.__class__.__name__
örnek: Ayrıca kendileri tuşları olarak, mutlaka classnames
buradatypefunc={
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'
<object>.__class__.__name__
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,
+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
Ne yazık ki, bu, alt sınıflarda düz düşüyor, ama "gerçek" OOP ve polimorfizme dair ipucu için +1. –
tercihim 'gerçek' oop kullanmak çok daha iyi olurdu: 'tipi (örnek) .__ name__' – Chris
Ne sınıf örneğini oluşturmak için istemiyorsanız? sınıfın adını alabilir misin? (nesne olmadan) – Gabriel
A sınıfı için aşağıdakileri kullanın: 'A .__ name__' – bk0