আমি ভাবছি কীভাবে অজগরটির প্রতিফলনযোগ্য ক্ষমতা ব্যবহার করে অজগর 'টাইপ' বস্তুকে স্ট্রিংয়ে রূপান্তর করা যায়।
উদাহরণস্বরূপ, আমি কোনও অবজেক্টের ধরণটি মুদ্রণ করতে চাই
print "My type is " + type(someObject) # (which obviously doesn't work like this)
আমি ভাবছি কীভাবে অজগরটির প্রতিফলনযোগ্য ক্ষমতা ব্যবহার করে অজগর 'টাইপ' বস্তুকে স্ট্রিংয়ে রূপান্তর করা যায়।
উদাহরণস্বরূপ, আমি কোনও অবজেক্টের ধরণটি মুদ্রণ করতে চাই
print "My type is " + type(someObject) # (which obviously doesn't work like this)
উত্তর:
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
।
print(type(someObject))
পুরো নামটি (যেমন প্যাকেজ সহ) মুদ্রণ করবে
>>> 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
বা আমি জানি না ... দয়া করে ব্যাখ্যা যুক্ত করুন;)
Str ব্যবহার করে ()
typeOfOneAsString=str(type(1))
আপনি যদি ব্যবহার করতে চান str()
এবং একটি কাস্টম 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'