这是一个简单的bokeh'quickstart'示例:
from bokeh.plotting import Figure
output_file("lines.html")
xs = [1, 2, 3, 4, 5]
ys = [6, 7, 2, 4, 5]
p = Figure()
p.line(xs, ys, legend="Temp.", line_width=2)
show(p)
这有效。 现在,如果我将Figure子类化,该脚本仍然可以正常运行并生成html页面,但浏览器将仅显示空白页面:
from bokeh.plotting import Figure
class TestFigure(Figure):
def __init__(self):
super().__init__()
output_file("lines.html")
xs = [1, 2, 3, 4, 5]
ys = [6, 7, 2, 4, 5]
p = TestFigure()
p.line(xs, ys, legend="Temp.", line_width=2)
show(p)
那是故意的吗?
答案 0 :(得分:1)
Bokeh类经过高度检测,以促进Python和JavaScript之间的自动序列化和同步。特别是,每个Bokeh类实际上都有两个部分,一个在Python中,另一个在JavaScript中。如果您是Python的子类,则必须提供相应的JavaScript实现。因此,仅在Python端子类化是不够的,您将需要create an entire custom extension。除非您实际上是在利用自定义扩展程序可以提供的功能,否则可能不值得这样做。
TLDR:散景类通常不应该被子类化,除非要进行自定义(JavaScript)扩展。