0

Keysこのクラスはプロパティへの引数を受け入れる必要がありますが、試してみるMyUserInstance.Keys('foo')と機能しません。代わりにそれは言いTypeError: Keys() takes exactly 2 arguments (1 given)ます。どうして間違っているの?

# User
class User:
    def __init__(self,
            Username = 'New User',
            **kwargs):
        self.Username = Username
        self.__dict__.update(kwargs)

    @property
    def Keys(self,collection):
        try:
            return {k:1 for k in db.UserPreferences.find_one({
                'Type':'VisibleKeys',
                'UserID':self._id,
                'CollectionName':collection})['Keys']}
        except:
            return None

    def __repr__(self):
        return '<User: "%s">' % self.Username
4

1 に答える 1

5

Keysは、クラスのインスタンスのバインドされたプロパティです。つまり、最初にインスタンスが必要です。

user = User()
user.Keys = "foo"

また、コレクション引数を削除します。それはゲッターです。セッターでのみ引数を定義できます。

それは本当に単なる方法であるべきだと思われます。したがって、実際には、プロパティデコレータを削除して、user.keys( "foo")を使用します。

getter、setter、およびdeleterを定義する方法については、http://docs.python.org/library/functions.html#propertyを参照してください

また、Pythonの慣習では、通常、クラス名の大文字が予約されます。User.keysになります

于 2012-08-10T03:43:31.770 に答える