美文网首页
python __slots__的使用,以及继承的时候的问题

python __slots__的使用,以及继承的时候的问题

作者: 远行_2a22 | 来源:发表于2019-07-14 13:59 被阅读0次

使用slots 知道了__slots主要为了限制类中的属性范围,防止随意添加。但是同样的和python 中的@property以及在继承中的使用 类似,在继承中不起效果

class Publisher:
    __slots__ = ('_data', 'name')
    def __init__(self):
        pass


class DefaultFormatter(Publisher):
    __slots__=('_data', 'name')
    def __init__(self, name):
        self.name = name
        self._data = 0
        self.age = 6

def main():
    df = DefaultFormatter('test1')
    print(df)
    df.data = 666
    print(df.data)
    print(df)
    df.data2 = 666

上述代码并没有报错。而如果改为

class DefaultFormatter(object):
    __slots__=('_data', 'name')
    def __init__(self, name):
        self.name = name
        self._data = 0
        self.age = 6

运行时编译器会正常报错

AttributeError: 'DefaultFormatter' object has no attribute 'age'

相关文章

网友评论

      本文标题:python __slots__的使用,以及继承的时候的问题

      本文链接:https://www.haomeiwen.com/subject/ecibkctx.html