我正在使用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
答案 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
然后你可以随意使用这些物体。