2017-01-02 2 views
-1

クラスのインスタンスの作成を自動化:Pythonの - 私はこの方法で構築されたクラスの数十を持っている

class playlist_type_1(radio): 
    '''child class''' 
    def __init__(self,user, type): 
     radio.__init__(self, user, type) 


class playlist_type_2(radio): 
    '''child class'''  
     def __init__(self,user,type): 
      radio.__init__(self, user, type) 

彼らは継承:私は私がしようとしている、users多くを持つことになりますので、

class radio(self, user, type): 
    '''parent class''' 

次のようなインスタンスを作成するためのモデルを作成してください。は、次のようなインスタンスを作成するためのモデルを作成します:thom、経由command lineで彼のplaylist_type_nをホース:

string = raw_input('Choose a playlist type> ') 

とインスタンスが作成され、実行されます。

thom = playlist_type1('Thom Yorke', string) 

が、これはclass scope内に実装することができますか?

+0

を使用すると、「クラスの範囲内」とはどういう意味ですか? – BrenBarn

+0

上記のコードをクラスメソッドとして使用することを意味します。 –

+0

私があなたがしていることは、あなたが持っているコードによって達成されていないことは明らかではありません。 'playlist_type_2'と他の何十種類ものクラスの目的は何ですか?ユーザーが「playlist_type_2」と入力した場合、「playlist_type_1」の代わりに「playlist_type_2」のインスタンスを作成するとしますか?つまり、ユーザーが入力した文字列をインスタンス化するクラスの名前として使用しますか?また、列挙値を保持する 'playlist_type'フィールドを持つ' radio'インスタンスを使用するのではなく、最初から非常に多くの異なるクラスが必要なのはなぜですか? –

答えて

1

はそれに基づいてクラスをインスタンス化し、その後クラスに名前のマッピングを作成して:

class PlaylistType1(Radio): 
    pass 


class PlaylistType2(Radio): 
    pass 


playlist_types = { 
    PlaylistType1.__name__: PlaylistType1, 
    PlaylistType2.__name__: PlaylistType2, 
} 

... 

playlist = playlist_types[chosen_type](user) 
+0

これはまさに私が探していたものです。ありがとうございます。 –

関連する問題