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的官方存储库。