• 技术文章 >后端开发 >Python教程

    Python中的__SLOTS__属性使用示例

    2016-06-10 15:17:50原创599
    看python社区大妈组织的内容里边有一篇讲python内存优化的,用到了__slots__。然后查了一下,总结一下。感觉非常有用

    python类在进行实例化的时候,会有一个__dict__属性,里边有可用的实例属性名和值。声明__slots__后,实例就只会含有__slots__里有的属性名。

    # coding: utf-8
     
     
    class A(object):
      x = 1
     
      def __init__(self):
        self.y = 2
     
    a = A()
    print a.__dict__
    print(a.x, a.y)
    a.x = 10
    a.y = 10
    print(a.x, a.y)
     
     
    class B(object):
      __slots__ = ('x', 'y')
      x = 1
      z = 2
     
      def __init__(self):
        self.y = 3
        # self.m = 5 # 这个是不成功的
     
     
    b = B()
    # print(b.__dict__)
    print(b.x, b.z, b.y)
    # b.x = 10
    # b.z = 10
    b.y = 10
    print(b.y)
     
     
    class C(object):
      __slots__ = ('x', 'z')
      x = 1
     
      def __setattr__(self, name, val):
        if name in C.__slots__:
          object.__setattr__(self, name, val)
     
      def __getattr__(self, name):
        return "Value of %s" % name
     
     
    c = C()
    print(c.__dict__)
    print(c.x)
    print(c.y)
    # c.x = 10
    c.z = 10
    c.y = 10
    print(c.z, c.y)
    c.z = 100
    print(c.z)

    {'y': 2}
    (1, 2)
    (10, 10)
    (1, 2, 3)
    10
    Value of __dict__
    1
    Value of y
    (10, 'Value of y')
    100 
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Python __SLOTS__ 属性
    上一篇:Python中运行并行任务技巧 下一篇:Python contextlib模块使用示例
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• python虚拟环境配置与管理• 一文搞懂怎么在python中读取和写入CSV文件• 总结分享Python冷门的技巧• 聊聊Python中列表和字典前加星号(**)• 一文搞懂Python爬虫解析器BeautifulSoup4
    1/1

    PHP中文网