Python & MySql
ssh можно получить, отправив им скэн своего паспорта. им просто нужно знать, тот ли я на самом деле, за кого себя выдаю (до сих пор я мог назваться кем угодно, и даже заграницей находиться).
при случае распечатаю, под каким пользователем выполняется пайтон, это легко опросить. думаю, это окажусь я : )
а с "принт" не можете объяснить? я так понимаю, что если класс не переписал __str__(), то print obj напечатает что-то типа object of class blablabla 0x0000000000012345. а если переписать, то будет печатать то, что эта функция выдает. и вот получаетя, что если я вызываю эту функцию напрямую (print obj.__str__() ), то print ведет себя иначе, чем если print obj. ф-я возвращает юникод, и в первом случае принт выводит то, что там закодировано, а во втором - пытается декодировать с помощью ascii codec (видимо), и выдает особый случай, если встречает байт больше 128. могу, конечно, отказаться от print obj, но хочется понять, как работает это на самом деле. желательно, не залезая в исходник от print() (а если вы не поможете, то придется)
догадываюсь, что там происходит. расскажу мою догадку.
встроенная функция print() смотрит на тип, который она получает в аргументах. если он unicode - декодирует его и печатает. если это - объект какого-то класса, то вызывает его __str__() исходя из того, что та должна (как говорит название), вернуь не юникод, а str. и декодирует соотв. кодеком ascii (пытается). дефолтная __str__() выдаст str "<class '... .ClassA'>". а если мы ее переписываем,
то должны вернуть str, а не unicode. а я возвращаю unicode. но вчера целый день "читал гоголя" на эту тему, и везде очень длинно рассуждают, что такое юникод и кодирование вообще, и ничего конкретно о моем случае.
если моя догадка правильна, то не вижу решения (пока), кроме как переписать ф-ю не __str__, а __unicode__, и печатать print obj.__unicode__()