Вызов метода базового класса Python: неожиданное поведение

Оберните создание опции функцией:

function makeOption($value)
{
    echo "<option value=\"$value\"";
    if(isset(

Оберните создание опции функцией:

[110]

Используйте ее в цикле while:

while( $rows = mysqli_fetch_assoc($resultset) )
    makeOption($rows["Product"]);
POST['formCountries']) && in_array($value,

Оберните создание опции функцией:

[110]

Используйте ее в цикле while:

while( $rows = mysqli_fetch_assoc($resultset) )
    makeOption($rows["Product"]);
POST['formCountries'])) echo ' selected="selected"'; echo ">$value</option>"; }

Используйте ее в цикле while:

while( $rows = mysqli_fetch_assoc($resultset) )
    makeOption($rows["Product"]);
5
задан stephan 18 March 2013 в 08:34
поделиться

3 ответа

str (A ()) вызывает __ str __ , в свою очередь вызывая dict .__ str __ () .

Это dict .__ str __ () , который возвращает значение repr (A).

9
ответ дан 18 December 2019 в 13:19
поделиться

Я изменил код, чтобы очистить вещи:

class A(dict):
   def __repr__(self):
      print "repr of A called",
      return 'repr(A)'
   def __str__(self):
      print "str of A called",
      return dict.__str__(self)

class B(dict):
   def __str__(self):
      print "str of B called",
      return dict.__str__(self)

И вывод:

>>> print 'call: repr(A)  expect: repr(A)  get:', repr(A())
call: repr(A)  expect: repr(A)  get: repr of A called repr(A)
>>> print 'call: str(A)   expect: {}       get:', str(A())
call: str(A)   expect: {}       get: str of A called repr of A called repr(A)
>>> print 'call: str(B)   expect: {}       get:', str(B())
call: str(B)   expect: {}       get: str of B called {}

Это означает, что функция str вызывает функцию repr автоматически , И поскольку он был переопределен для класса A, он возвращает «неожиданное» значение.

3
ответ дан 18 December 2019 в 13:19
поделиться

Я опубликовал обходное решение для этого. Проверьте это ... может оказаться полезным: http://blog.teltub.com/2009/10/workaround-solution-to-python-strrepr.html

PS Прочтите исходный пост, в котором я также представил проблему ... Проблема в том, что неожиданное поведение, которое застает вас врасплох ...

2
ответ дан 18 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

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