सामान्य ओओपी का उपयोग करने के बजाय, जावा और सी # जैसे उनके बेस क्लास Object
या object
के साथ करते हैं, पायथन वस्तुओं के मूल व्यवहार के लिए विशेष तरीकों का उपयोग करता है। अजगर का उपयोग करता __str__
जो जब वस्तु print
में भेजा जाता है प्रयोग किया जाता है:पायथन में असामान्य ओओपी का कारण?
>>> class Demo:
>>> def __str__(self):
>>> return "representation"
>>> d = Demo()
>>> print(d)
representation
ही len
साथ:
>>> class Ruler:
>>> def __len__(self):
>>> return 42
>>> r = Ruler()
>>> len(r)
42
मैं क्या उम्मीद करेंगे कुछ इस तरह है:
>>> class Ruler:
>>> def len(self):
>>> return 42
>>> r = Ruler()
>>> r.len()
42
क्या सामान्य तरीकों को सीधे कॉल करने के बजाय अप्रत्यक्ष रूप से विशेष तरीकों का उपयोग करने का कारण क्या है?
के रूप में \ _ \ _ str \ _ \ _, मैं यह समझ के रूप में, यह जावा/सी # के toString के बराबर है। \ _ \ _ str \ _ \ _ ऑब्जेक्ट का एक टेक्स्ट प्रस्तुतिकरण देता है, जो प्रिंट से स्पष्ट रूप से अलग है - मानक आउटपुट में पाठ का प्रतिनिधित्व प्रिंट करें। – ChrisJ
क्या यह आपका मतलब है? http://docs.python.org/faq/design.html#why-does-python-use-methods-for-some-functionality-eg-list-index-but-functions-for-other-eg-len- सूची –
@ थॉमस हां, यही जवाब है। शायद आप इसे एक उत्तर के रूप में लिखना चाहते हैं ... – deamon