为什么user.params()不会将所有参数都返回到继承 链? - 它不包括Person()中定义的参数 - 通知 Vertex()没有params()方法。在Python类中多次使用super()
class Element(object):
def __init__(self,element_type):
self.oid = None
self.uuid = uuid.uuid4()
self.key = None
self.element_type = element_type
def params(self):
return dict(uuid=self.uuid, key=self.key)
class Vertex(Element):
def __init__(self):
super(Vertex,self).__init__("vertex")
class Person(Vertex):
def __init__(self,name=None,uri=None,email=None):
self.s = super(Person,self)
self.s.__init__()
self.name=name
self.uri=uri
self.email = email
def params(self):
params = dict(name=self.name,uri=self.uri,email=self.email)
params.update(self.s.params())
return params
class User(Person):
def __init__(self,
name=None,
uri=None,
email=None,
first_name=None,
last_name=None,
facebook_id=None,
facebook_link=None,
facebook_username=None,
gender=None,
locale=None):
self.s = super(User,self)
self.s.__init__(name,uri,email)
self.first_name = first_name
self.last_name = last_name
self.facebook_id = facebook_id
self.facebook_link = facebook_link
self.facebook_username = facebook_username
self.gender = gender
self.locale = locale
def params(self):
params = dict(first_name=self.first_name,
last_name=self.last_name,
facebook_id=self.facebook_id,
facebook_link=self.facebook_link,
facebook_username=self.facebook_username,
gender=self.gender,
locale=self.locale)
print self.s.params()
params.update(self.s.params())
return params
1.那不是MI。 2. **你在'Person .__ init __()'和'User .__ init __()'中要做什么**? – 2011-04-14 16:46:36
用户的__init__方法通过super()调用Person的__init__方法,以便它可以访问Person的方法和属性。 Person的__init__方法以相同的方式通过super()调用Vertex的__init__方法。 – espeed 2011-04-14 16:58:17
不,它不。它在一个属性中放置一个'super'代理,然后调用一个方法。 – 2011-04-14 16:59:08