MFB*_*MFB 0 python properties class
这个类应该接受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
Run Code Online (Sandbox Code Playgroud)
Keys是类的实例的绑定属性.这意味着您必须首先拥有一个实例.
user = User()
user.Keys = "foo"
Run Code Online (Sandbox Code Playgroud)
也摆脱了集合arg.这是一个吸气剂.您只能在setter上定义arg.
它看起来真的应该只是一种方法.实际上,摆脱属性装饰器并使用:user.keys("foo")
您可以在此处阅读有关如何定义getter,setter和deleter的信息:http://docs.python.org/library/functions.html#property
python约定通常会保留类名的大写.这将是User.keys
| 归档时间: |
|
| 查看次数: |
370 次 |
| 最近记录: |