首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python类-属性继承

Python类-属性继承
EN

Stack Overflow用户
提问于 2017-01-01 02:53:40
回答 0查看 112关注 0票数 1

我正在尝试使用class inheritance实现一个项目,其中的父类是:

代码语言:javascript
复制
class radio:

    def __init__(self, artist=None, track=None, genre=None):

        self.artist = artist 
        self.track = track
        self.genre = genre

然后,我为每个attribute创建methods (非工作示例):

代码语言:javascript
复制
    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

用户将在上面选择一个种子(只有一个),它是artisttrackgenremood,这就是为什么我用None初始化所有参数,让参数值在继承级别插入。

继承的class为:

代码语言:javascript
复制
class playlist(radio):

    def __init__(self,user):
        radio.__init__(self, artist, track, genre)

假设用户在命令行输入一个track seed,我的脚本以一个全局变量开头:

代码语言:javascript
复制
track = 'karma police'

这样,所有其他属性(artistgenre)仍为None

当我创建一个实例时,说:

代码语言:javascript
复制
jeff = playlist('Jeff Smith')

它将抛出一个错误,指出没有定义genreartist,并且我只能继承track属性,如下所示:

代码语言:javascript
复制
radio.__init__(self, track)

我知道我可以使用定义的全局变量启动脚本:

代码语言:javascript
复制
track = None
genre = None
artist = None

这将允许我拥有:

代码语言:javascript
复制
radio.__init__(self, artist, track, genre)

但在我看来这是多余的..。

是否有解决方法,不需要将全局变量的初始值设置为None,将所有代码保持在类作用域定义内?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41410959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档