ازگر میں ، __repr__ اور __سٹر__ میں کیا فرق ہے؟


جواب 1:

اتفاق سے میں وضاحت کرنے کی کوشش کروں گا۔ _سٹر_ اور _ ریپر_ دونوں فرق کے ساتھ سٹرنگ کی نمائندگی کے لئے ہیں۔ ریپٹر (آبجیکٹ تکنیکی تفصیلات) کے ذریعے آپ ازگر کے اظہار کی تشخیص کرنے کے لئے ازگر ایونل () فنکشن کو کال کرسکتے ہیں لیکن آپ ایسا نہیں کرسکتے ہیں۔

>>> repr (4) == str (4)
سچ ہے
>>> repr ('آسان ہین ...') == str ('عام ہین ...')
جھوٹا

اب اس سلوک کو سمجھنے کے ل the فرد کو آؤٹ پٹ دیکھنا چاہ.

>>> s = 'سادہ ہین ...'
>>> دوبارہ
"'سادہ ہین ...'"
>>> str (ے)
'سادہ ہین ...'
>>> str (4)
'4'
>>> دوبارہ کریں (4)
'4'

_repr_ اور _سٹر_ کو سمجھنے کے لئے ازگر کی ایونل فنکشن کا استعمال

>>> ایال (دوبارہ بھیجیں ('سادہ ہین ...'))
'سادہ ہین ...'
>>> ایال (str ('آسان ہین ...'))
ٹریس بیک (حالیہ کال آخری بار):
  <ماڈیول> میں فائل "" ، لائن 1
   میں "" ، لائن 1 ، فائل کریں
نام غلطی: نام 'سادہ ہین ...' کی وضاحت نہیں کی گئی ہے

اب یہ خصوصیت کہاں استعمال کی جائے۔ ازگر میں _repr_ کو آبجیکٹ کی معلومات دینے کے لئے استعمال کیا جاتا ہے اور _سٹر_ کا استعمال طباعت یا نمائش کے مقصد کے لئے کیا جاتا ہے۔

  • اعتراض کے بارے میں مزید تکنیکی تفصیلات دینے کے ل implement آپ کو نافذ کرنے والے ہر طبقے کے لئے __repr__ کو نفاذ کرنے کی کوشش کریں۔ ان کلاسوں کے لئے __str__ کو نافذ کرنے کی کوشش کریں جن کے بارے میں آپ کو لگتا ہے کہ پڑھنے کی اہلیت زیادہ ضروری ہے

یہ مثال مجھے نیٹ پر پائی

>>> تاریخ وقت درآمد کی تاریخ سے
>>> اب = ڈیٹ ٹائم۔نو ()
>>> دوبارہ بھیجیں (اب)
'ڈیٹ ٹائم ڈاٹ ٹائم (2013 ، 2 ، 5 ، 4 ، 43 ، 11 ، 673075)'
>>> str (اب)
'2013-02-05 04: 43: 11.673075'

امید ہے کہ آپ اس کو سمجھ گئے ہوں گے۔


جواب 2:

__repr__ کے لئے ، "اگر ہر ممکن ہو تو ، یہ ایک درست ازگر کے اظہار کی طرح نظر آنا چاہئے جو کسی شے کو ایک ہی قدر (ایک مناسب ماحول دیئے گئے) کے ساتھ دوبارہ تخلیق کرنے کے لئے استعمال کیا جا سکتا ہے۔ اگر یہ ممکن نہیں ہے تو ، شکل کی ایک تار <.. .کچھ مفید وضاحت ...> کو واپس کرنا چاہئے۔ "

لہذا ، ٹھوس طور پر ، __str__ کے لئے ایک تار "xyzzy" اسٹرنگ ہوگی: xyzzy

جبکہ سٹرنگ کے لئے __repr__ اسٹرنگ ہوگی: 'xyzzy'


جواب 3:

__repr__ کے لئے ، "اگر ہر ممکن ہو تو ، یہ ایک درست ازگر کے اظہار کی طرح نظر آنا چاہئے جو کسی شے کو ایک ہی قدر (ایک مناسب ماحول دیئے گئے) کے ساتھ دوبارہ تخلیق کرنے کے لئے استعمال کیا جا سکتا ہے۔ اگر یہ ممکن نہیں ہے تو ، شکل کی ایک تار <.. .کچھ مفید وضاحت ...> کو واپس کرنا چاہئے۔ "

لہذا ، ٹھوس طور پر ، __str__ کے لئے ایک تار "xyzzy" اسٹرنگ ہوگی: xyzzy

جبکہ سٹرنگ کے لئے __repr__ اسٹرنگ ہوگی: 'xyzzy'