Python中类变量和类的属性
来源:互联网 发布:冰川网络vr游戏上线没 编辑:程序博客网 时间:2024/05/17 09:25
概要:
最近在用Python写一个博客系统的后台,其中遇到了这样一个错误:有一个获取所有文章的接口,每次调用这个接口返回的文章数就会加一倍。后来发现是在一个类中用了一个类变量存储文章列表所致,改成用类属性来存储后问题解决。此问题出现的原因在于误将实际上由类的各个实例共享的变量当成了各个类独有的,也就是说Python中类的变量和C++中类的静态成员类似
类变量和类的属性:
如下代码所示:
class Test: x = 1 def __init__(self): self.y = 2
x即为类Test的变量,各个Test的实例中的x都是一样的,而y为Test的属性,每个Test实例的y都是独立的。
关于类变量的补充说明:
a = Test()
b = Test()
你只能通过Test.x的方式来改变类变量的值,
如果你尝试使用a.x = 2的方式来改变x的值,你将会发现无论是b.x还是Test.x的值都是1,说明
a.x = 2并没有改变类变量x的值,而只是为a增加了一个名称为x的属性,由于属性和类变量的
名称一样,属性会覆盖掉类变量的值,所以你会看到:
a.x为2
而
b.x 为1
Test.x 为1
当然,如果类变量是引用类型的话,例如:
class Test: x = list()a = Test()b = Test()
你也可以用a.x.append(1)来改变类变量的内容,需要注意的是如果你要替换整个list(),你只能用Test.x = [1,2,3]这种方法,a.x = [1,2,3],和上面的例子一样,只会为a增加一个名称为x的属性
--------------------------------------------------
author: cs_cjl
website: http://blog.csdn.net/cs_cjl
--------------------------------------------------
author: cs_cjl
website: http://blog.csdn.net/cs_cjl
--------------------------------------------------
- Python中类变量和类的属性
- Python语法中容易混淆的地方-类属性/实例属性/公有变量/私有化变量
- Python 类属性变量和全局变量
- python中类属性和数据属性的解释
- python中类属性和实例属性的区别
- python中实例属性和类属性之间的关系
- C# 类中属性和成员变量的使用
- C# 类中属性和成员变量的使用
- IOS中"声明属性"和类成员变量的关系
- 我对类中属性和变量的一点见解
- C# 类中属性和成员变量的使用
- python的类变量与实例变量以及__dict__属性
- python的类变量与实例变量以及__dict__属性
- python的类变量与实例变量以及__dict__属性
- python的类变量与实例变量及__dict__属性
- python的类变量与实例变量以及__dict__属性
- Python的类变量和实例变量
- Python的类变量和实例变量
- 对话框的按键处理 PreTranslateMessage、OnKeyDown和OnChar
- unix命令常用
- 字符串 (一) 2012-12-10 11:03 pm
- 如何修改LR自带的示例程序端口号
- “中国芯”能抗衡英特尔吗?
- Python中类变量和类的属性
- linux常用
- jquery_笔记-设置默认,任意选中选项
- [Win32]一个调试器的实现(九)符号模型
- UART驱动,从驱动原理到实际驱动
- 学习php安全和防注入
- 并查集-朋友问题
- 三层架构与MVC
- apns服务器介绍