爲什麼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