IPython docs给出了一个示例,说明如何在IPython中创建自己的对象以使其可以丰富显示:
class Shout(object):
def __init__(self, text):
self.text = text
def _repr_html_(self):
return "<h1>" + self.text + "</h1>"
但是,这只是一个非常简单的示例,对于我来说,我不仅要呈现文本,还希望在小部件中呈现Markdown。
我尝试了许多不同的变体
class Shout(object):
def __init__(self, text):
self.text = text
def _repr_html_(self):
return "<h1>" + IPython.display.Markdown(self.text) + "</h1>"
或
class Shout(object):
def __init__(self, text):
self.text = text
def _repr_html_(self):
return "<h1>" + IPython.display.Markdown(self.text)._repr_html_() + "</h1>"
或
class Shout(object):
def __init__(self, text):
self.text = text
def _repr_html_(self):
return "<h1>" + IPython.display.display(IPython.display.Markdown(self.text)) + "</h1>"
但是它们都不起作用。它们要么不显示任何内容,None
,要么不显示AttributeError: 'Markdown' object has no attribute '_repr_html_'
。
有没有一种方法可以在IPython中的另一个对象内显示markdown显示对象?我想实现自己的_repr_latex_
,因此将<h1>
插入Markdown并不是解决方案。