Possible Duplicate:
what is difference between init and call in python?
我正在尝试创建一个可调用类,它将接受参数,然后将其自身作为对象返回。
class User(object):
def __init__(self, loginName, password):
self.loginName = loginName
def __call__(self):
if self.login():
return self
return None
def login(self):
database = db.connection
realUser = database.checkPassWord(self.loginName, self.password)
return realUser
我的问题是,如果我像这样调用这个对象:
newUserObject = User(submittedLoginName)
威尔__init__
在 __call__
之前接到电话?应该__init__
得到论点,或者我应该将论点转移到 __call__
喜欢
def __call__(self, loginName):
最佳答案
__call__
仅在将自身定义为可调用的实例上调用。
__init__
是提供类实例的初始值设定项
如果你做了类似的事情
MyObject()()
然后您正在初始化 THEN 调用。
使用您自己的示例
class User(object):
def __init__(self, loginName, password):
self.loginName = loginName
self.password = password
def __call__(self):
if self.login():
return self
return None
def login(self):
database = db.connection
return database.checkPassWord(self.loginName, self.password)
a = User("me", "mypassword")
a = a() # a is now either None or an instance that is aparantly logged in.
关于python - __call__ 与 __init__ : Who gets the arguments? 谁先被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554397/