1

重複の可能性:Pythonでのinitcall
の違いは何ですか?

引数を取り、それ自体をオブジェクトとして返す呼び出し可能なクラスを作成しようとしています。

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):
4

1 に答える 1

4

__call__自分自身を呼び出し可能として定義するインスタンスでのみ呼び出されます。

__init__クラスのインスタンスを提供した初期化子です

あなたが次のようなことをするなら

MyObject()()次に、呼び出しを開始します。

独自の例を使用する

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.
于 2012-09-23T17:14:58.520 に答える