Python中的__SLOTS__属性使用示例_python

看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 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索python
, 属性
__SLOTS__
python slots、python代码示例、python示例程序、python 示例、python入门代码示例,以便于您获取更多的相关知识。

时间: 2024-12-31 10:48:14

Python中的__SLOTS__属性使用示例_python的相关文章

Python中的zip函数使用示例_python

zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表.具体意思不好用文字来表述,直接看示例: 1.示例1: 复制代码 代码如下: x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) print xyz 运行的结果是: [(1, 4, 7), (2, 5, 8), (3, 6, 9)] 从这个结果可以看出zip函数的基本运作方式. 2.示例2: 复制代码 代码如下: x = [1, 2, 3] y = [

Python中使用ElementTree解析XML示例

  这篇文章主要介绍了Python中使用ElementTree解析XML示例,本文同时讲解了XML基本概念介绍.XML几种解析方法和ElementTree解析实例,需要的朋友可以参考下 [XML基本概念介绍] XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. 概念一: 代码如下: # foo元素的起始标签 # foo元素的结束标签 # note: 每一个起始标签必须有对应的结束标签来闭合, 也可以写成 概念二: 代码如下: #

用Python中的__slots__缓存资源以节省内存开销的方法_python

我们曾经提到,Oyster.com的Python web服务器怎样利用一个巨大的Python dicts(hash table),缓存大量的静态资源.我们最近在Image类中,用仅仅一行__slots__代码,让每个6G内存占用的服务进程(共4个),省出超过2G来. 这是其中一个服务器在部署代码前后的截图: 我们alloc了大约一百万个类似如下class的实例:   class Image(object):     def __init__(self, id, caption, url):   

实例讲解Python中的私有属性_python

在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子: 复制代码 代码如下: #! encoding=UTF-8   class A:     def __init__(self):                  # 定义私有属性         self.__name = "wangwu"                  # 普通属性定义         self.age = 19          a = A()   # 正常输出 print a.ag

Python中的魔法方法深入理解_python

接触Python也有一段时间了,Python相关的框架和模块也接触了不少,希望把自己接触到的自己 觉得比较好的设计和实现分享给大家,于是取了一个"Charming Python"的小标,算是给自己开了一个头吧, 希望大家多多批评指正. :) from flask import request Flask 是一个人气非常高的Python Web框架,笔者也拿它写过一些大大小小的项目,Flask 有一个特性我非常的喜欢,就是无论在什么地方,如果你想要获取当前的request对象,只要 简单

Python中Collection的使用小技巧_python

本文所述实例来自独立软件开发者 Alex Marandon,在他的博客中曾介绍了数个关于 Python Collection 的实用小技巧,在此与大家分享.供大家学习借鉴之用.具体如下: 1.判断一个 list 是否为空 传统的方式: if len(mylist): # Do something with my list else: # The list is empty 由于一个空 list 本身等同于 False,所以可以直接: if mylist: # Do something with

在Python中使用Neo4j数据库的教程_python

 一个快速的REST例子 首先来看些基本知识.如果没有服务API,Neo4j就不能支持其他语言.该接口提供一组基于JSON消息格式的RESTful Web服务和一个全面的发现机制.使用中使用这个接口的最快和最容易的方法是通过使用cURL:   $ curl http://localhost:7474/db/data/ { "extensions" : { }, "node" : "http://localhost:7474/db/data/node&quo

python中 ? : 三元表达式的使用介绍_python

(1) variable = a if exper else b(2)variable = (exper and [b] or [c])[0](2) variable = exper and b or c 上面三种用法都可以达到目的,类似C语言中 variable = exper ? b : c;即:如果exper表达式的值为true则variable = b,否则,variable = c 例如: 复制代码 代码如下: a,b=1,2max = (a if a > b else b)max =

举例介绍Python中的25个隐藏特性_python

注:这里忽略了生成器,装饰器,交换变量等熟知技巧1. 函数参数unpack 老生常谈的了:   def foo(x, y): print x, y alist = [1, 2] adict = {'x': 1, 'y': 2} foo(*alist) # 1, 2 foo(**adict) # 1, 2 2. 链式比较操作符  >>> x = 3 >>> 1 < x < 5 True >>> 4 > x >=3 True 3.