2017-11-03 6 views
0

returnステートメントで定義されたクラスの新しいオブジェクトを取得しようとしていますが、returnステートメントの使用中に問題があります。私が得なければならないのは、同じ戻りステートメントでコンストラクターを呼び出すことによる新しいオブジェクトです。 は、コンストラクターを必要とするものを引数として渡します。各クラスのコンストラクタがクラスの名前であることを考慮してください。returnステートメントで定義されたサブクラスの新しいオブジェクトを返す方法

これは私がこれまで持っているものです。

def complementary(self): 
    complementary = ''.join([DNA.bases_complementary[base] for base in self.get_sequence()]) 
    return complementary 

しかし、それはちょうど明白なものである文字列を返しますが、サブクラスのDNA(スーパークラスでの新しいオブジェクトとしてこの文字列を返すことが可能ですSEQUENCE)。 私のスーパークラスがこれです:

class SEQUENCE: 
    def __init__(self, sequence): 
     self.__sequence = sequence 
     length = len(sequence) 
    def __str__(self): 
     st = 'The introduced sequence is: {0}\n'.format(self.__sequence) 
     st = st + 'The length of the sequence is: {0}\n'.format(len(self.__sequence)) 
     return st 

    def get_sequence(self): 
     return self.__sequence 

マイDNAサブクラスはこれです:

class DNA(SEQUENCE): 
    bases = {'A','T', 'C','G'} 
    complementary_bases = {'A':'T', 'T':'A', 'C':'G','G':'C'} 
    transcription = {'A':'U', 'T':'A', 'C':'G','G':'C'} 

    def __init__(self, sequence): 
     super().__init__(sequence) 
     self.__length = len(sequence) 
     bases = {'A','T','C','G'} 
     sequence_set = set(sequence) 
     if sequence_set <= bases: 
      print('The introduced sequence is', sequence, 'with the following length',len(sequence)) 
     else: 
      print('INCORRECT DNA SEQUENCE') 
      raise NameError('SequenceError') 
+0

complimentaria' 'から返される文字列の例は何ですか? – cosinepenguin

答えて

0

はこれを試してみてください:

return DNA(complementary) 
+0

これが返されます:導入された配列は 'sequence'です。シーケンスの長さは 'length'です。<_ main __。DNA object at 0x000001CCC02F4EB8>、私はDNAオブジェクトを返しますが、 "<__ main __。 0x000001CCC02F4EB8> "実際にはどういう意味ですか? –

+0

<__ main __。DNAオブジェクト0x000001CCC02F4EB8>はあなたが望むオブジェクトであり、 "導入されたシーケンスは 'sequence'シーケンスの長さは 'length'です。__initでコード化したオブジェクトの出力です__() – lpozo

+0

x = DNA( 'ACTGGT')、私はx.complentary()を呼び出して新しいオブジェクトをDNAとして返しますが、x.get_sequence()を呼び出すと以前のものに戻ります。相補配列。それは普通ですか? –

関連する問題