Python: Вернитесь для базирования __ ул. __ поведение

в Perl все делают

use warnings;

, мне нравится

use warnings FATAL => 'all';

, Это заставляет код умирать за любое предупреждение компилятора/времени выполнения. Это главным образом полезно в ловле неинициализированных строк.

use warnings FATAL => 'all';
...
my $string = getStringVal(); # something bad happens;  returns 'undef'
print $string . "\n";        # code dies here
6
задан Paul Tarjan 6 September 2009 в 00:00
поделиться

2 ответа

Вы можете использовать объект .__ str __ () :

class A:
   def __str__(self):
      return "Something useless"

class B(A):
   def __str__(self):
      return object.__str__(self)

Это дает вам вывод по умолчанию для экземпляров B :

>>> b = B()
>>> str(b)
'<__main__.B instance at 0x7fb34c4f09e0>'
12
ответ дан 8 December 2019 в 17:24
поделиться

"функция по умолчанию, которую python использует, если нет метода __ str __ " - это repr , поэтому:

class B(A) :
   def __str__(self) :
      return repr(self)

Это имеет место, если __repr __ был переопределен в цепочке наследования или нет. IOW, если вам ТАКЖЕ нужно обойти возможные переопределения __ repr __ (в отличие от их использования, если они существуют, как при этом подходе), вам потребуются явные вызовы объекта .__ repr __ (self) (или объект .__ str __ , как предполагал другой ответ - то же самое).

2
ответ дан 8 December 2019 в 17:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: