Jupyter Notebook (IPython)에서 셀 출력을 풍부하게 만듭니다.
이런 느낌이군요. 이런 식으로 풍부한 출력을 할 수 있는 객체는 어떻게 만드는지 아십니까?
IPython 문서 에 쓰여졌습니다.
_repr_*_
라는 형식의 이름의 메소드를 구현하는 것으로 실현할 수 있습니다. 이 *
에 해당하는 것은,있습니다. SymPy는 아마 LaTeX로 구현되고 있다고 생각합니다만, 이번은 알기 쉬운 SVG를 사용해 봅시다.
Face() + Eye(35, 40) + Eye(65, 40) + Mouth(50, 75)
구현은 다음과 같습니다.
class Component():
def __init__(self, items = None):
self.items = items or [self]
def __add__(self, target):
return Component(self.items + target.items)
def _repr_svg_(self):
return ''.join([
'<svg width="100" height="100">',
*map(str, self.items),
'</svg>'
])
class Face(Component):
def __str__(self):
return '<circle cx="50" cy="50" r="45" fill="none" stroke="black" stroke-width="1" />'
class Eye(Component):
def __init__(self, x, y):
super().__init__()
self.x, self.y = x, y
def __str__(self):
return f'<circle cx="{self.x}" cy="{self.y}" r="5" fill="black" />'
class Mouth(Component):
def __init__(self, x, y):
super().__init__()
self.x, self.y = x, y
def __str__(self):
return f'<path d="M{self.x} {self.y} l15 -5 h-30 Z" fill="none" stroke="black" stroke-width="1" />'
Reference
이 문제에 관하여(Jupyter Notebook (IPython)에서 셀 출력을 풍부하게 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chelproc/items/efebe765c0b75e299c31텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)