擅长:python、mysql、java
<p>通过实现<code>_repr_pretty_</code>,我能够用IPython实现我想要的(至少大致上是这样):</p>
<pre><code>def get_public_variables(obj):
from inspect import getmembers
return [(name, value) for name, value in
getmembers(obj, lambda x: not callable(x)) if
not name.startswith('__')]
class MySuperClass(object):
def _repr_pretty_(self, p, cycle):
for (name, value) in get_public_variables(self):
f = '{:>12}{} {:<} \n'
line = f.format(str(name), ':', str(value))
# p.text(str(name) + ': ' + str(value) + '\n')
p.text(line)
class MyClass(MySuperClass):
_x = 5
@property
def x(self):
return self._x + 100
</code></pre>
<p>给我的答案是:</p>
^{pr2}$
<p>很明显,在空白等方面还有一些微调要做,但这正是我试图完成的</p>