-2

我正在写一堂课:

from bioservices import KEGGParser
class Retrieve_Data():
    def __init__(self):

        def hugo2kegg(self,gene_name,organism):
            s=KEGGParser()
            kegg_gene_entry = s.get(organism+':'+gene_name)
        return kegg_gene_entry


a = Retrieve_Data()

但是当我运行它时,我得到一个 NameError:

NameError: global name 'kegg_gene_entry' is not defined

有人能告诉我哪里出错了吗?

4

1 回答 1

4

你的 init 不能返回任何东西,如果你不打算使用你的定义,那么在其中定义任何东西可能是没有意义的。你可能想摆脱你的__init__并做这样的事情:

from bioservices import KEGGParser
class Retrieve_Data():
    def hugo2kegg(self,gene_name,organism):
        s=KEGGParser()
        kegg_gene_entry = s.get(organism+':'+gene_name)
        return kegg_gene_entry


a = Retrieve_Data()

您不需要__init__, 除非您希望在对象实例化后立即发生事情。

如果你想要一个不做任何事情的 init,你需要在它下面有一些东西

class Retrieve_Data():
    def __init__(self):
        pass # we'll add more later?

或者

class Retrieve_Data():
    def __init__(self):
        '''not doing anything now, maybe we'll write an init later?'''

然后你可以继续为这个对象定义另一个函数/方法。

于 2014-11-09T19:38:27.110 回答