Python类-属性继承

8位博尔赫斯

我正在尝试使用实施项目class inheritance,其中父类为:

class radio:

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

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

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

    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

用户会挑以上(只有一个)种子,无论是它artisttrackgenre或者mood,这就是为什么我初始化所有参数None,使参数值在继承级别插入。

继承的class是:

class playlist(radio):

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

假设用户在命令行a处输入了内容track seed,我的脚本最终以全局变量开头:

track = 'karma police'

这样,所有其他属性(artistgenre)都会保留None

创建实例时,请说:

jeff = playlist('Jeff Smith')

它会抛出一个错误,指出genreartist没有定义,我将不得不只继承track属性,就像这样:

radio.__init__(self, track)

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

track = None
genre = None
artist = None

这将使我拥有:

radio.__init__(self, artist, track, genre)

但这在我看来似乎是多余的...

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

布伦·巴恩

代替对每个字段使用单独的全局变量,对所有字段使用单个字典。然后,您可以将字典作为关键字参数传递。

也就是说,不要创建名为的全局变量artist,而创建名为radio_fields的字典用户输入查询时,请在此字典上设置一个键:

radio_fields = {}
...
# when you get the user's command
radio_fields['track'] = 'Karma Police'

现在您可以致电radio.__init__(self, **radio_fields)无论键在哪里,都将作为参数传递radio_fields如果只有一个,则只会传递一个,而其他的将采用您在定义时定义的默认值radio.__init__

也许可以使用更好的方法来构建整个程序,但是根据您在此处显示的内容很难说。例如,目前尚不清楚为什么playlist只接受一个user参数。如果playlist接受了所有接受的字段参数radio,它可以radio毫无问题地传递给它们

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从父类继承属性

来自分类Dev

访问继承类的属性

来自分类Dev

属性继承类

来自分类Dev

Python类继承:动态属性创建

来自分类Dev

在类之间继承属性值的Python方法

来自分类Dev

OOP、Python——类继承或属性分配

来自分类Dev

子类化Python类以继承超类的属性

来自分类Dev

子类化Python类以继承超类的属性

来自分类Dev

确定继承属性的基类

来自分类Dev

继承:来自父类的属性

来自分类Dev

从类A调用类B并继承类A的属性?

来自分类Dev

不继承属性的Python子类

来自分类Dev

Python中的属性继承问题

来自分类Dev

不继承属性的Python子类

来自分类Dev

如何继承类属性Python

来自分类Dev

搜索继承者使用的继承类的方法/属性

来自分类Dev

搜索继承者使用的继承类的方法/属性

来自分类Dev

在继承的类方法中使用静态属性

来自分类Dev

继承的属性类的C#OO建议

来自分类Dev

使用继承的类更改属性类型

来自分类Dev

在继承类中忽略[ScriptIgnore]属性

来自分类Dev

从基类继承的基类属性

来自分类Dev

继承的Grails域类缺少动态属性

来自分类Dev

如何从基类获取继承的属性

来自分类Dev

以最正确的方式继承类实例属性

来自分类Dev

TypeScript:获取类的非继承属性

来自分类Dev

在继承的类的集合中丢失子类的属性

来自分类Dev

继承的Grails域类缺少动态属性

来自分类Dev

Javascript从类继承属性和方法?