2016-11-14 7 views
-1

私は同じジャンルの多くのプレイリストを保持するプレイリストのclassをビルドしています。Python - クラスの作成とインスタンス化

class playlist(object): 
     def __init__(self,name): 
     self.name = name 

私は、ユーザーを渡し、それらをインスタンス化したいと思います:

 def hard_rock(self,user): 
     self.user = user 
     #query and retrieve data from music API 
     #return playlist 

     def pop_rock(self,user): 
     self.user = user 
     #query and retrieve data from music API 
     #return playlist 

     #and so on 

は、インスタンスを作成します。

r = playlist('rock') 
r.hard_rock('user1') 

これは、クラスを構築し、インスタンス化の論理的な方法は何ですか?

+0

これは何をすると思われますか? 'pop_rock'と' hard_rock'はどちらもまったく同じことをします。 –

+0

'__init __()'も同様です:P Edit:nvm、different var –

+0

インスタンスが作成されると、完全に使用可能になります。あなたの場合、そうではありません。別のメソッドを呼び出す必要があります。これらの属性は '__init __()'メソッドで初期化する必要があります。 – kindall

答えて

2

非常に(私が正しく理解していれば、あなたはプレイリストやユーザー

class Playlist(object): 
    def __init__(self, name): 
     self.name = name 
     self.liked_by = list() 

    @classmethod 
    def get_genre(cls, genre): 
     # this relies on no instance of this class 
     pass 
     # return api data... 

class User(object): 
    def __init__(self, name): 
     self.name = name 

    def likes_playlist(self, playlist): 
     playlist.liked_by.append(self.name) 

をしたいとプレイリストは、アプリケーションのコアコンポーネントであれば、その後、いくつかの例

playlists = list() 
hard_rock = Playlist('hard_rock') 

joe = User('joe') 
joe.likes_playlist(hard_rock) 

playlists.append(hard_rock) 
playlists.append(Playlist('pop_rock')) 

country = Playlist.get_genre('country') 
1

はこのような何かが可能ですクラス継承を使用した簡単な例)。

>>> class playlist: 
...  def __init__(self,name, user): 
...   self.name = name 
...   self.user = user 
... 
>>> class hardrock(playlist): 
...  def __init__(self,name, user): 
...   playlist.__init__(self, name, user) 
... 
>>> test = hardrock('my_awesome_hardrock_list', 'my_awesome_username') 
>>> print test.name 
my_awesome_hardrock_list 
>>> print test.user 
my_awesome_username 

ユーザーのためだけの文字列を使用して後で実際のオブジェクトに置き換え、プレイリストとユーザーの間に何らかの関係を追加することができます。より多くのアイデアについては、cricket_007の提案を参照してください。

関連する問題