سؤال

مجمع الطبقة: ديف فيه(الذات ، 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) وجعلها إرجاع تمثيل سلسلة (لا طباعة واحدة).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top