2011-02-15 17 views
79

Bir python 'type' nesnesinin python'un yansıtıcı özelliklerini kullanarak bir dizeye nasıl dönüştürüleceğini merak ediyorum.Bir python 'type' nesnesini bir dizeye dönüştürme

Örneğin, ben bir nesne türünü yazdırmak istiyorum

print "My type is " + type(someObject) # (which obviously doesn't work like this) 

DÜZENLEME: Btw, teşekkürler çocuklar, ben sadece konsol çıkış amaçlı türleri düz baskı, fantezi bir şey arıyordu . size uygun değilse sadece iyi Gabi adlı type(someObject).__name__ eserleri :)

+1

Bir nesnenin "tipini" ne düşünüyorsunuz? Ve ne yazdığın hakkında ne işe yaramaz? – Falmarri

+0

Özür dilerim, yazdırma türü (bazı Nesne) aslında çalışıyor :) –

cevap

125
print type(someObject).__name__ 

, bunu kullanın:

print some_instance.__class__.__name__ 

Örnek: Ayrıca

class A: 
    pass 
print type(A()) 
# prints <type 'instance'> 
print A().__class__.__name__ 
# prints A 

, öyle görünüyor type() ile farklılıklar vardır Yeni stil sınıfları vs eski stil kullanırken (yani, object dan miras). Yeni stil sınıfı için type(someObject).__name__ adı döndürür ve eski stil sınıfları için instance döndürür.

+0

Yazdırma (tür (someObject)) '' tam adını yazdıracaktır (örneğin, paket dahil) – MageWind

6
>>> class A(object): pass 

>>> e = A() 
>>> e 
<__main__.A object at 0xb6d464ec> 
>>> print type(e) 
<class '__main__.A'> 
>>> print type(e).__name__ 
A 
>>> 

Bir dizeye dönüştürerek ne demek istiyorsunuz? Kendi repr ve str _ yöntemleri tanımlayabilirsiniz:

>>> class A(object): 
    def __repr__(self): 
     return 'hei, i am A or B or whatever' 

>>> e = A() 
>>> e 
hei, i am A or B or whatever 
>>> str(e) 
hei, i am A or B or whatever 

veya i explainations eklemek know..please yok; ...)

+0

Btw. Bence orijinal cevabın da yararlı olduğu str (type (someObject)) vardı –

2
print("My type is %s" % type(someObject)) # the type in python 

veya

print("My type is %s" % type(someObject).__name__) # the object's type (the class you defined) 
İlgili konular