【发布时间】:2012-09-15 06:50:33
【问题描述】:
我正在尝试创建一个可调用的类,该类将接受参数,然后将自身作为对象返回。
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):
【问题讨论】:
-
这并不能回答我的问题...我试图了解它们之间的关系,而不仅仅是“有什么区别”
-
@yourfriendzak 我认为您需要一个客户调用的工厂函数——这样他们就不需要知道
User类。无论如何,如果您的User类必须自己登录然后响应您的客户的进一步呼叫,那么它的责任太多了。 -
@quamrana 你说得对...我要删除 call 并只使用 init