طباعة المثيل في بيثون
-
30-09-2019 - |
سؤال
مجمع الطبقة: ديف فيه(الذات ، Realpart ، Imagpart): self.real = RealPart self.imag = imagpart print self.real ، self.imag
أحصل على هذا الإخراج:
>>> Complex(3,2)
3 2
<__main__.Complex instance at 0x01412210>
ولكن لماذا يطبع السطر الأخير؟
المحلول
لأن منشئ الفصل يعيد دائمًا المثيل ، ثم يمكنك استدعاء طريقته بعد ذلك
inst = Complex(3,2)
inst.dosomething()
نصائح أخرى
يمكنك تشغيل الرمز من موجه Python التفاعلي ، والذي يطبع نتيجة أي عبارات ، ما لم يكن كذلك None
.
جربها:
>>> 1
1
>>> 1 + 3
4
>>> "foobar"
'foobar'
>>>
لذلك مكالمتك إلى Complex(3,2)
هو إنشاء كائن ، والبيثون يطبخه.
لأنه نتيجة البيان "المجمع (3،2)". بمعنى آخر ، يتم إرجاع كائن معقد ، ويطبع المترجم التفاعلي نتيجة البيان السابق على الشاشة. إذا حاولت "C = Complex (3 ، 2)" ، فسوف تقمع الرسالة.
ما تريده هو تحديد __str__(self)
وجعلها إرجاع تمثيل سلسلة (لا طباعة واحدة).
لا تنتمي إلى StackOverflow