2014-11-09 3 views
-2

Я пишу класс:Имя ошибки в Python класса

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

проверьте отступ для hugo2kegg. – user3684792

+0

Причина, по которой я отменил бит hugo2kegg снова, состоит в том, что у меня была ошибка отступа без ... – CiaranWelsh

+0

Не удивительно, что у вас была ошибка без отступа здесь, учитывая, что код в этом случае будет синтаксически неправильным. Что вы пытаетесь достичь? – user3684792

ответ

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__, если вы не хотите, то произойдет сразу после того, как объект экземпляра.

Если вы хотите в инициализации, что ничего не делать, вы должны были бы иметь что-то под ним:

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?''' 

и затем вы могли бы пойти на для определения другой функции/метода для этого объекта.

+0

У меня создалось впечатление, что все классы должны иметь «__init __ (self)», даже если ничего нет? – CiaranWelsh

+1

нет, это неправильное впечатление. Для уточнения см. Https://docs.python.org/2/tutorial/classes.html – user3684792

Смежные вопросы