__slots__
声明允许限制动态属性声明。但这只是__slots__
的一系列副作用中的一个。如何在没有__slots__
的情况下限制动态属性声明?
所需语法:
class A(SomeSmrtClass):
__allowed_attrs = set(['a', 'b'])
期望的行为:
>>> a = A()
>>> a.a = 1 # Allowed
>>> a.c = 2 # Allowed in SomeSmartClass by deault
>>> a.d = 3
AttributeError: ...