阻止在__init__之外创建新的属性。

14 浏览
0 Comments

阻止在__init__之外创建新的属性。

我想能够创建一个类(在Python中),一旦使用__init__进行初始化,就不接受新的属性,但允许修改现有属性。有几种我可以看到的hack的方法来做到这一点,例如有一个__setattr__方法,如下所示:

def __setattr__(self, attribute, value):
    if not attribute in self.__dict__:
        print "Cannot set %s" % attribute
    else:
        self.__dict__[attribute] = value

然后在__init__内直接编辑__dict__,但我想知道是否有一种“适当”的方法来做到这一点?

0