2017-01-02 7 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) 

они наследуют:

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

, поскольку у меня будет много users, я стараюсь построить модель для создания экземпляров, как так:

thom = playlist_type1('Thom Yorke', 'playlist_type_1') 

сам пользователь, thom, будет Ĉ шланг его playlist_type_n в command line через:

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_2' вместо' playlist_type_1'? Другими словами, вы хотите использовать строку, введенную пользователем как имя класса для создания экземпляра? Кроме того, почему в первую очередь возникает потребность в стольких разных классах, вместо того, чтобы просто использовать экземпляры «radio» с полем «playlist_type», содержащим значение перечисления? –

ответ

1

Создайте отображение имен для классов, а затем создать экземпляр класса, основанный на том, что:

class PlaylistType1(Radio): 
    pass 


class PlaylistType2(Radio): 
    pass 


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

... 

playlist = playlist_types[chosen_type](user) 
+0

это именно то, что я искал, спасибо. –

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

  • Нет связанных вопросов^_^