2015-09-14 2 views
0

У меня есть программа, которая читает во входном текстовом файле (DNA.txt) последовательности ДНК, а затем переводит последовательность ДНК (сохраненную в виде строки) в различные аминокислотные коды SLC с помощью этой функции:Наследование функции Python

def translate(uppercase_dna_sequence, codon_list): 
    slc = "" 
    for i in range(0, len(uppercase_dna_sequence), 3): 
      codon = uppercase_dna_sequence[i:i+3] 
      if codon in codon_list: 
       slc = slc + codon_list[codon] 
      else: 
       slc = slc + "X" 
    return slc 

Я тогда функция, которая создает два вывода текстовых файлов называется:

normalDNA.txt and mutatedDNA.txt

Каждый из этих файлов имеет одну длинную последовательность ДНК.

Теперь я хочу написать функцию, которая позволяет мне читать оба эти файла в качестве входных файлов и использовать упомянутую выше функцию «перевести», чтобы перевести последовательности ДНК, содержащиеся в текстовых файлах. (так же, как я сделал оригинальный файл DNA.txt, упомянутый в начале этого объяснения), но используя оригинальную функцию перевода. (Поэтому я предполагаю, что я пытаюсь наследовать свойства другой функции для этого). У меня есть этот код:

def txtTranslate(translate): 
    with open('normalDNA.txt') as inputfile: 
     normalDNA_input = inputfile.read() 
     print normalDNA_input 

    with open('mutatedDNA.txt') as inputfile: 
     mutatedDNA_input = inputfile.read() 
     print mutatedDNA_input 

    return txtTranslate 

Программа работает, когда я называю его:

print txtTranslate(translate) 

Но он печатает:

function txtTranslate at 0x103bf39b0>

Я хочу второй функции (txtTranslate) читать внешние текстовые файлы, а затем первую функцию перевести входы и «распечатать» результат пользователю ...

У меня есть мой полный код по запросу, но я думаю, что мне не хватает чего-то маленького, надеюсь! или я должен положить все в классы с ООП?

Я новичок в связывая две функции, поэтому, пожалуйста, простите за отсутствие знаний во второй функции ...

ответ

2

Это не имеет ничего общего с наследованием. Если вы хотите, чтобы txtTranslate выполнил translate, вы должны на самом деле позвонить ему. Попробуйте:

def txtTranslate(): 
    with open('normalDNA.txt') as inputfile: 
     normalDNA_input = inputfile.read() 
     print normalDNA_input 

    with open('mutatedDNA.txt') as inputfile: 
     mutatedDNA_input = inputfile.read() 
     print mutatedDNA_input 

    #todo: get codon_list from somewhere 
    print translate(normalDNA_input, codon_list) 
    print translate(mutatedDNA_input, codon_list) 

txtTranslate() 
+0

Привет снова Кевин, я постараюсь это быстро ... Я получаю сообщение об ошибке, что говорит: линия 70, в txtTranslate (перевод) TypeError: txtTranslate() принимает ровно 2 аргумента (1) – Lee

+0

Извините, Кевин, никаких ошибок, это была моя ошибка. Теперь он работает, но не дает результата (печать) – Lee

+0

Хорошо, я немного поиграл, это работает сейчас, но спасибо за вашу помощь. Я думаю, что проблема исходит откуда-то еще. Дает мне ПОЧТИ, что я хочу! :) Спасибо за ваш вклад! – Lee

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