簡體   English   中英

Sympy __repr__ magic - 它是如何工作的?

[英]Sympy __repr__ magic - How does it work?

我注意到在調用init_printing方法之后,變量的表示具有更好的視覺吸引力。 我知道這通常是繼承repr方法。

但是當我調用__repr__方法時,結果是不同的。 為什么?

init_printing之前,結果如下:

>>> import sympy as sy
>>> x = sy.Symbol('x')
>>> sy.exp(x)
exp(x)

>> sy.exp(x).__repr__()
'exp(x)'

調用init_printing后,結果如下:

>>> import sympy as sy
>> sy.init_printing()
>>> x = sy.Symbol('x')
>>> sy.exp(x)
 x
e

>> sy.exp(x).__repr__()
'exp(x)'

為什么repr方法不會像評估變量的表示一樣返回?

>>> sy.exp(x).__repr__
<bound method Basic.__repr__ of exp(x)>

該函數安裝一個自定義的sys.displayhook()函數 ,該函數在交互式解釋器中用於回顯表達式的結果:

在評估在交互式Python會話中輸入的表達式的結果上調用sys.displayhook 可以通過為sys.displayhook指定另一個單參數函數來自定義這些值的顯示。

該實現可在sympy.interactive.printing模塊中找到:

 def _init_python_printing(stringify_func, **settings): """Setup printing in Python interactive session. """ import sys from sympy.core.compatibility import builtins def _displayhook(arg): """Python's pretty-printer display hook. This function was adapted from: http://www.python.org/dev/peps/pep-0217/ """ if arg is not None: builtins._ = None print(stringify_func(arg, **settings)) builtins._ = arg sys.displayhook = _displayhook 

換句話說,這與對象如何實現__repr__

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM