python继承__init__混乱

时间:2015-08-10 02:28:36

标签: python python-2.7

我正在使用python 2.7并且对继承概念感到困惑。

我想制作一个可以从各种漫画(日本漫画网站)下载的剧本

每个漫画网站都使用不同的方法来保存文件。所以我有一个名为“mangacanblog”的“Manga_site”类和类(这是一个漫画网站)。

每个漫画网站都有:主页,收藏,页面等。每个网站都有所不同。我的问题是。这个脚本是否正确存储那些主页,collection_page等变量?或者我应该在mangacanblog类中使用self.homepage而不是在Manga_site类中使用?

class Manga_site:

    def __init__(self,homepage,collection_page,base_manga_page,manga_title = ""):
        self.homepage = homepage
        self.collection_page = collection_page
        self.base_manga_page = base_manga_page
        self.manga_title = manga_title


class Mangacanblog(Manga_site):

    def __init__(self,manga_title):
        homepage = bloglink
        collection_page = collectionpagelink
        manga_title = manga_title.lower()
        base_manga_page = basepagelink

1 个答案:

答案 0 :(得分:0)

Mangacanblog的{​​{1}}函数中,您只是设置局部变量__init__()homepage等,而不是实例变量,以使它们成为必须的实例变量使用collection_page,这需要在超类和子类中使用。

但更好的做法是调用self.让超类处理它的初始化,然后你可以按照你想要的方式初始化子类。

但是为此,您需要通过继承super(Manga_site).__init__()类来将Manga_site定义为新的样式类。示例 -

object

我猜你要在子类中使用它们之前定义class Manga_site(object): def __init__(self,homepage,collection_page,base_manga_page,manga_title = ""): self.homepage = homepage self.collection_page = collection_page self.base_manga_page = base_manga_page self.manga_title = manga_title class Mangacanblog(Manga_site): def __init__(self,manga_title): super(Mangacanblog, self).__init__(bloglink, collectionpagelink, basepagelink, manga_title.lower()) bloglink

但是,从你给出的例子来看,你要实现的目标可能是使用collectionpagelink类,而不是继承。

当子类具有额外的属性/属性和额外的方法时,使用Inheritence。

如果要在其中存储不同的数据,则可以创建同一类的不同对象。示例 -

objects

然后你可以随意使用这些物体。