Python类属性没有正确接受参数

2024-06-02 04:51:41 发布

您现在位置:Python中文网/ 问答频道 /正文

这个类应该接受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

Tags: self参数return属性foodefusernamekeys
1条回答
网友
1楼 · 发布于 2024-06-02 04:51:41

键是类实例的绑定属性。这意味着你必须先有一个实例。在

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

同时去掉集合参数。这是一个吸引人的东西。只能在setter上定义arg。在

看起来这真的应该只是一种方法。所以,事实上,摆脱房产装饰师,使用:用户密钥(“foo”)

您可以在这里阅读如何定义getter、setter和deleter:http://docs.python.org/library/functions.html#property

此外,python约定通常会为类名保留大写。是的用户密钥在

相关问题 更多 >