2016-11-14 93 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编辑:nvm,不同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对更多想法的建议。