Python 3.x 在Jupyter中跨多个单元格拆分类函数?
给定以下代码:Python 3.x 在Jupyter中跨多个单元格拆分类函数?,python-3.x,oop,jupyter-notebook,jupyter,Python 3.x,Oop,Jupyter Notebook,Jupyter,给定以下代码: class DTC: def __init__(self): self.__root = None def unique(self,Y): d = {} for i in Y: if i not in d: d[i]=1 else: d[i]+=1 return d def en
class DTC:
def __init__(self):
self.__root = None
def unique(self,Y):
d = {}
for i in Y:
if i not in d:
d[i]=1
else:
d[i]+=1
return d
def ent(self,Y):
freq = self.__count_unique(Y)
ent_ = 0
total = len(Y)
for i in freq:
p = freq[i]/total
entropy_ += (-p)*math.log2(p)
return ent_
如果将其放在Jupyter笔记本的单个单元格中,则上述操作将运行。但是,如果我希望将类代码拆分为多个单元格(如下所示),如何使其工作:
第1单元
class DTC:
def __init__(self):
self.__root = None
第2单元
def unique(self,Y):
d = {}
for i in Y:
if i not in d:
d[i]=1
else:
d[i]+=1
return d
第三单元
def ent(self,Y):
freq = self.__unique(Y)
ent_ = 0
total = len(Y)
for i in freq:
p = freq[i]/total
ent_ += (-p)*math.log2(p)
return ent_
在Jupyter笔记本中,有两种方法可以在多个单元格上拆分类定义 方法1 以天真的方式进行(利用继承和超越): Cell-1
class故障诊断码:
定义初始化(自):
self.\uuu root=无
Cell-2
class故障诊断码(DTC):
def唯一(自我,Y):
d={}
对于Y中的i:
如果我不在d:
d[i]=1
其他:
d[i]+=1
返回d
Cell-3
class故障诊断码(DTC):
定义(自我,Y):
freq=自身。\u计数\u唯一(Y)
ent=0
总计=长度(Y)
对于i in freq:
p=频率[i]/总计
熵=(-p)*数学log2(p)
返回耳鼻喉科_
需要注意的是,这实际上在内部创建了类的层次结构:
导入检查
检查getmro(故障诊断码)
#输出:(\uuuuu main\uuuuuuuu.DTC、\uuuuu main\uuuuuuuuu.DTC、对象)
如果不打算拉伸过多的单元,可以使用此方法
方法2
使用包装;更多详细信息/文档,请参阅
单元格1
import jdc#jupyter动态类
类别故障诊断码:
定义初始化(自):
self.\uuu root=无
单元格2
%%将\u添加到DTC
def唯一(自我,Y):
d={}
对于Y中的i:
如果我不在d:
d[i]=1
其他:
d[i]+=1
返回d
单元格3
%%将\u添加到DTC
定义(自我,Y):
freq=自身。\u计数\u唯一(Y)
ent=0
总计=长度(Y)
对于i in freq:
p=频率[i]/总计
熵=(-p)*数学log2(p)
返回耳鼻喉科_
这一次没有形成层次结构:
导入检查
检查getmro(故障诊断码)
#输出:(\uuuuu main\uuuuuuuu.DTC,对象)
“是否有可能从Jupyter中的类中分离函数?”-您可以测试这个,它真的不需要太多时间,对不起,我最初的问题不是正确的短语。编辑了这篇文章。是的,我以前已经试过了。有两种方法可以达到这个目的!以上内容摘自Jupyter的官方存储库。