我正在尝试使用class inheritance实现一个项目,其中的父类是:
class radio:
def __init__(self, artist=None, track=None, genre=None):
self.artist = artist
self.track = track
self.genre = genre然后,我为每个attribute创建methods (非工作示例):
def seed_artist(self):
results = api.search(q=self.artist, type='artist')
return results
def seed_track(self):
results = api.search(q=self.track, type='track')
return results
def seed_genre(self):
results = api.search(q=self.genre, type='genre')
return results用户将在上面选择一个种子(只有一个),它是artist、track、genre或mood,这就是为什么我用None初始化所有参数,让参数值在继承级别插入。
继承的class为:
class playlist(radio):
def __init__(self,user):
radio.__init__(self, artist, track, genre)假设用户在命令行输入一个track seed,我的脚本以一个全局变量开头:
track = 'karma police'这样,所有其他属性(artist、genre)仍为None。
当我创建一个实例时,说:
jeff = playlist('Jeff Smith')它将抛出一个错误,指出没有定义genre和artist,并且我只能继承track属性,如下所示:
radio.__init__(self, track)我知道我可以使用定义的全局变量启动脚本:
track = None
genre = None
artist = None这将允许我拥有:
radio.__init__(self, artist, track, genre)但在我看来这是多余的..。
是否有解决方法,不需要将全局变量的初始值设置为None,将所有代码保持在类作用域定义内?
https://stackoverflow.com/questions/41410959
复制相似问题