2014-10-06 2 views
0

Я определил класс «ДНК». Теперь я пытаюсь создать функцию внутри этого класса, которая позволит мне переводить ДНК в РНК (что в основном означает замену любого «Т» на «U»). Мой класс ДНК унаследовал параметры из другого класса. Мне нужно использовать метод string.replace.Определение функции с string.replace в классе

class DNA(Seq): 
    def __init__(self, seq): 
    Seq.__init__(self, seq, pattern=(re.compile('[^ACGTacgt]'))) 
    self.data = seq.upper() 
def __repr__(self): 
     return self.data 

Я хочу использовать функцию на dna-последовательности класса ДНК.

Edit: Я хочу, чтобы иметь возможность сделать следующее:

dna1 = DNA('ACCCGT') 
rna1 = dna1.translate_to_RNA() 
print rna1 

где translate_to_RNA() является моя определенная функция и выход будет ('ACCCGU')

Edit2:

class Seq: 
    def __init__(self, seq, pattern): 
     if pattern.search(seq): 
      print " Warning : sequence contains illegal characters " 
     self.data = seq.upper() 
    def __getitem__(self, index): 
     return self.data[index] 
    def __len__(self): 
     return len(self.data) 

import re 

class DNA(Seq): 
    def __init__(self, seq): 
     Seq.__init__(self, seq, pattern=(re.compile('[^ACGTacgt]'))) 
     self.data = seq.upper() 
     self.seq = seq 
    def __repr__(self): 
     return self.data 
    def translate_to_RNA(self): 
     new_string = self.seq("T","U") 
     rna1 = RNA(new_string) 
     return rna1 


class RNA(Seq): 
    def __init__(self, seq): 
     Seq.__init__(self, seq, pattern=(re.compile('[^ACGUacgu]'))) 
     self.data = seq.upper() 
    def __repr__(self): 
      return self.data 
+0

Вы прочитали документацию для string.replace? Эта функция сделает все, что вам нужно. – user3885927

ответ

0

Определить метод внутри вас, используя метод string.replace() в строке, которая представляет данные. (Вы не объяснили, как были представлены эти данные).

Редакция: Вы должны использовать строковую переменную в классе ДНК, которая сохранит строку, в которой вы инициализируете экземпляр ДНК. вы должны определить аналогичный класс РНК. то, вы можете реализовать функцию в классе ДНК, как это:

def translate(self): 
    new_string=self.string_representation.replace("T","U") 
    rna1 = RNA(new_string) 
    return rna1 

, как для оператора печати, необходимо реализовать строковый бросок для вас класса РНК. (с использованием str)

+0

У меня уже есть аналогичный класс для определения РНК. Я сожалею о том, что aksing был новичком, но что я должен поставить вместо string_representation? (мой редактор дает мне ошибку атрибута: у экземпляра DNA нет атрибута «string_representation». –

+0

вы должны создать его в методе __init__ и поместить в него строковый параметр. – ByoTic

+0

Мне жаль, что у меня так много проблем, Я уверен, что ваш ответ правильный, но я не могу заставить его работать. Я разместил весь свой код. Если бы вы могли подробно рассказать о своей душе, это было бы здорово. Если мне не хватает каких-либо фундаментальных знаний, пожалуйста, дайте мне знать. –

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