2012-09-10 36 views
0

在Python中我可以这样做:子类在Python和__init__:实际的例子

import mechanize 
class MC (object): 
     def __init__(self): 
      self.Browser = mechanize.Browser()   
      self.Browser.set_handle_equiv(True) 
     def open (self,url): 
      self.url = url 
      self.Browser.open(self.url) 

我的问题是:我怎么能__init__子类中的父类的方法(即是这样的):

class MC (mechanize.Browser): 
     def __init__(self): 
      self.Browser.set_handle_equiv(True) 

帮助很多appriciated!

+0

对象继承的关键概念之一是子继承父级的所有属性(属性,方法)。也许你应该看看OOP的介绍,再次:-) –

回答

2

只需调用该方法直接在基类方法可以在您的实例初始化过程:

class MC(mechanize.Browser): 
    def __init__(self): 
     self.set_handle_equiv(True) 

你可能想调用基类__init__方法以及虽:

class MC(mechanize.Browser): 
    def __init__(self): 
     mechanize.Browser.__init__(self) 
     self.set_handle_equiv(True) 

我们需要直接拨打__init__,因为Browserold-style python class;在新式python类中,我们使用super(MC, self).__init__()代替,super() function提供了一个代理对象,它可以搜索基类层次结构以找到要调用的下一个匹配方法。

+2

我不知道机械化,但似乎你可能需要首先调用'mechanize.Browser .__ init __(self)'来确保浏览器被初始化正常。 – mgilson

+0

@Pieters:我其实已经试过了。什么mgilson建议解决问题:) – root

+0

@root:那是一个旧式的课程,我会更新。 –