关于类中slots属性的用法的疑问

__slots__保存着实例变量的列表,并且在实例中保留空间以确定它们在实例中。一旦使用了__slots__,其它的实例变量就不能被赋值了。

文档中是这么说的:
引用

This class variable can be assigned a string, iterable, or sequence of strings with variable names used by instances. If defined in a new-style class, __slots__ reserves space for the declared variables and prevents the automatic creation of __dict__ and __weakref__ for each instance


也就是说
class C(object):
    __slots__='b'
    def __init__(self):
        self.b=67
c=C()
c.e=9 #这里就会报异常


我有个问题,请看下面的代码
class B(object):
    a=23
class C(B):
    __slots__='b'
    def __init__(self):
        self.b=67
c=C()
c.e=9


上面的代码就不会报异常,想问一下这是什么原因?

你可能感兴趣的:(C++,c,C#)