Я выдаю много предупреждений в блоке проверки допустимости, и я хотел бы подавить все в stdout кроме сообщения, которое предоставляется warnings.warn()
.
Т.е. теперь я вижу это:
./file.py:123: UserWarning: My looong warning message
some Python code
Я хотел бы видеть это:
My looong warning message
Редактирование 2: переопределение warnings.showwarning()
выпущенный для работы:
def _warning(
message,
category = UserWarning,
filename = '',
lineno = -1):
print(message)
...
warnings.showwarning = _warning
warnings.warn('foo')
Monkeypatch warnings.showwarning ()
с вашей собственной пользовательской функцией.
В
всегда есть обезьяна:
import warnings
def custom_formatwarning(msg, *args, **kwargs):
# ignore everything except the message
return str(msg) + '\n'
warnings.formatwarning = custom_formatwarning
warnings.warn("achtung")
Сначала добавить
filterContext.HttpContext.Response.Clear();
и это в конце:
filterContext.HttpContext.Response.End();
Надеюсь, это поможет.
-121--2663128-Я бы пошел с boost:: scoped _ ptr здесь:
class A: boost::noncopyable
{
typedef boost::scoped_ptr<B> b_ptr;
b_ptr pb_;
public:
A() : pb_() {}
void calledVeryOften( /*…*/ )
{
pb_.reset( new B( params )); // old instance deallocated
// safely use *pb_ as reference to instance of B
}
};
Нет необходимости в ручном деструкторе, A
не копируется, как это должно быть в вашем оригинальном коде, не утечка памяти при копировании/назначении.
Я бы предложил переосмыслить дизайн, хотя если вам нужно очень часто перераспределять какой-то внутренний государственный объект. Ознакомьтесь с параметрами Flyweight и State узоров.
-121--2666428-