एक अजगर 'प्रकार' ऑब्जेक्ट को एक स्ट्रिंग में बदलें


152

मैं सोच रहा हूं कि अजगर की चिंतनशील क्षमताओं का उपयोग करके एक अजगर 'प्रकार' ऑब्जेक्ट को स्ट्रिंग में कैसे परिवर्तित किया जाए।

उदाहरण के लिए, मैं एक वस्तु के प्रकार को प्रिंट करना चाहता हूं

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

1
किसी वस्तु के "प्रकार" को आप क्या मानते हैं? और जो आपने पोस्ट किया उसके बारे में क्या काम नहीं करता है?
फाल्मरी 20

माफी, प्रिंट प्रकार (someObject) वास्तव में काम करता है :)
Rehno Lindeque

जवाबों:


223
print type(someObject).__name__

यदि वह आपको सूट नहीं करता है, तो इसका उपयोग करें:

print some_instance.__class__.__name__

उदाहरण:

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

इसके अलावा, ऐसा लगता है कि type()नई शैली की कक्षाओं का उपयोग करते समय पुराने-शैली (यानी, उत्तराधिकार से object) के साथ मतभेद हैं । एक नई शैली की कक्षा के लिए, type(someObject).__name__नाम लौटाता है, और पुरानी शैली की कक्षाओं के लिए यह वापस लौटता है instance


3
डूइंग print(type(someObject))पूरा नाम प्रिंट करेगा (यानी पैकेज सहित)
मैजविंड

7
>>> class A(object): pass

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

स्ट्रिंग में परिवर्तित होने का क्या मतलब है? आप अपने स्वयं के repr और str _ विधियों को परिभाषित कर सकते हैं :

>>> 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

या मैं नहीं जानता .. कृपया स्पष्टीकरण जोड़ें;)


Btw। मुझे लगता है कि आपका मूल उत्तर str (प्रकार (someObject)) था जो मददगार भी था
Rehno Lindeque

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

या ...

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


1

मामले में आप का उपयोग करना चाहते हैं str()और एक कस्टम स्ट्रिंग विधि। यह भी repr के लिए काम करता है।

class TypeProxy:
    def __init__(self, _type):
        self._type = _type

    def __call__(self, *args, **kwargs):
        return self._type(*args, **kwargs)

    def __str__(self):
        return self._type.__name__

    def __repr__(self):
        return "TypeProxy(%s)" % (repr(self._type),)

>>> str(TypeProxy(str))
'str'
>>> str(TypeProxy(type("")))
'str'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.