【发布时间】:2011-04-05 22:24:28
【问题描述】:
我希望能够创建一个类(在 Python 中),该类一旦使用 __init__ 初始化,就不会接受新属性,但接受对现有属性的修改。我可以看到有几种 hack-ish 方法可以做到这一点,例如使用 __setattr__ 方法,例如
def __setattr__(self, attribute, value):
if not attribute in self.__dict__:
print "Cannot set %s" % attribute
else:
self.__dict__[attribute] = value
然后直接在__init__ 内编辑__dict__,但我想知道是否有“正确”的方法来做到这一点?
【问题讨论】:
-
katrielalex 带来了好处。没有什么可笑的。你可以避免使用
__setattr__,但这可能会很老套。 -
我不明白为什么这是 hacky?这是我能想到的最好的解决方案,而且比其他一些人提出的要简洁得多。
标签: python python-3.x class oop python-datamodel