Sadece sınıf tanımlarında __repr__
yöntemini ayarlamak için örnekler gördüm. __repr__
işlevlerini tanımlarında ya da tanımladıktan sonra değiştirmek mümkün mü?Python'da bir işlevin reprini değiştirmek mümkün mü?
başarı olmadan teşebbüs ettik ...
>>> def f():
pass
>>> f
<function f at 0x1026730c8>
>>> f.__repr__ = lambda: '<New repr>'
>>> f
<function __main__.f>
Dekoratörlerin adını ve dekore edilmiş işlevlerin belgelerini güncellemek için lütfen 'functools.wraps' kullanın. – schlamar
Sorun, 'print mul42 .__ name__', bir işlev için beklenmeyen bir AttributeError öğesinin yükseltilmesidir. Yani şöyle olurdu: 'geri sarma (func) (reprwrapper (reprfun, func))' bunu düzeltmek için. – schlamar
@ ms4py Bu durumda, "update_wrapper" ın biraz daha uygun/dolaysız olduğunu düşünüyorum. Sarıcı sınıfını değiştirdim, böylece bunu yapıcısında yapıyor. Bu şekilde, "withrepr" dekoratörünü kullanmak yerine sınıfı doğrudan kullansanız bile güncelleme gerçekleşir. – kwatford