python类setter限制

时间:2012-06-01 06:48:33

标签: python

我有一个类和一个属性writable_attributes,它是一个属性数组,在实例化类时应该可以设置下注:

class User(object):
    writable_attributes = ['username','email']

如果设置了另一个属性,如果它不在writable_attributes列表中,我希望能够引发错误。我正在浏览一个通用的二传手,但我找不到任何符合我需求的东西。类似的东西:

user = User()
user.foo = 'bar' # This should raise an error since only `username` and `email` can be set

3 个答案:

答案 0 :(得分:2)

这听起来像你真正寻找的是__slots__

答案 1 :(得分:2)

首先,重新考虑是否真的需要这样做。它通常是过度工程化的。如果您确定确实需要,请查看__slots__ - 如果您将writable_attributes重命名为__slots__,则尝试创造更多。如果你需要设置一次现有的一些现有的,你可以用属性来做。

答案 2 :(得分:2)

您可能也对__setattr__感兴趣。这会覆盖对象的属性设置。 广告位还有其他并发症, setattr 没有。