ऐसा नहीं है कि मुझे पता है कि आप ऐसा क्यों करना चाहते हैं, क्योंकि पाइथन में कोई भी "सरल" प्रकार नहीं है, यह सभी ऑब्जेक्ट्स है। लेकिन यह काम करता है:
type(theobject).__name__ in dir(__builtins__)
लेकिन स्पष्ट रूप से प्रकारों को सूचीबद्ध करना शायद बेहतर है क्योंकि यह स्पष्ट है। या इससे भी बेहतर: एप्लिकेशन को बदलना ताकि आपको अंतर जानने की आवश्यकता न हो।
अद्यतन: समस्या को हल करने की समस्या यह है कि वस्तुओं के लिए एक धारावाहिक बनाने के लिए, यहां तक कि उन अंतर्निर्मित भी हैं। ऐसा करने का सबसे अच्छा तरीका एक बड़ा फ़ैट सीरियलाइज़र नहीं बनाना है जो बिल्टिन को अलग-अलग व्यवहार करता है, लेकिन प्रकार के आधार पर क्रमबद्धता को देखने के लिए।
कुछ इस तरह:
def IntSerializer(theint):
return str(theint)
def StringSerializer(thestring):
return repr(thestring)
def MyOwnSerializer(value):
return "whatever"
serializers = {
int: IntSerializer,
str: StringSerializer,
mymodel.myclass: MyOwnSerializer,
}
def serialize(ob):
try:
return ob.serialize() #For objects that know they need to be serialized
except AttributeError:
# Look up the serializer amongst the serializer based on type.
# Default to using "repr" (works for most builtins).
return serializers.get(type(ob), repr)(ob)
इस तरह से आप आसानी से नए serializers जोड़ सकते हैं, और कोड, बनाए रखने के लिए आसान है और स्पष्ट है के रूप में प्रत्येक प्रकार के अपने स्वयं के serializer है। ध्यान दें कि कैसे कुछ प्रकार निर्मित किए गए तथ्य पूरी तरह से अप्रासंगिक हो गए हैं।
if isinstance(myvar, primitiveTypes): ...
types
module सभी महत्वपूर्ण प्रकार के संग्रह जो सूची का निर्माण करने में मदद कर सकते हैं/टपल: :)
स्रोत
2009-08-24 12:32:47
आपका मतलब "मूल" प्रकार से क्या है? क्या आपका मतलब बिल्टिन है? तुम्हें यह जानने की आवश्यकता क्यों है? पायथन सी ++ या जावा नहीं है, इसलिए "सरल" या "मूल" प्रकारों के बीच कोई अंतर नहीं है। तुम क्या करने की कोशिश कर रहे हो? –
हां, मुझे लगता है कि मेरा मतलब है "बिल्टिन" प्रकार। मुझे किसी ऑब्जेक्ट के ऐसे प्रतिनिधित्व की आवश्यकता है, जिसे मैं JSON क्रमबद्धरण में उपयोग कर सकता हूं। simplejson केवल ऐसे ही प्रकार "हैंडल"। अन्य मामलों में (जब ऑब्जेक्ट "घर का बना" वर्गों के उदाहरण होते हैं) मुझे dict वस्तुओं को बनाने की आवश्यकता होती है। –
आप जानते हैं कि सरलजसन में "ऑब्जेक्ट डिकोडिंग" और "ऑब्जेक्ट एन्कोडिंग" कहा जाता है? –