在研究类的时候,难免会有很多疑问,C论坛和博客园高手如云(不知道是不是也美女如云),

搜到了这篇博文,是介绍Python的类变量和实例变量的 ! 刚好在下对self.***这种形式的实例变

量不是很理解,就拿来与诸君共享!

C博客的大伽: http://blog.csdn.net/xxkkff/article/details/4396895

上一篇【类不类一】: http://www.cnblogs.com/Ruby517/p/5709558.html

一般的类定义是写成这种形式

class <类名>:
<语句>

不过现在我们更多是写成这种继承类的形式

class <类名>(父类名):
<语句>

其实还有一种是多重继承的类,大家有兴趣可以看下:

脚本之家的介绍:  http://www.jb51.net/article/42623.htm

------------------------------------------------------------------------------------------------

切入正题,在下斗胆把原文作者的代码改了一点点

【__init__()下面一般放的是 self.*** 这种形式的,是实例变量】

【类名下面,函数外面的变量是类变量, 可以是self.__class_.***,也可以是 "类名.***" 这种形式】

 # coding: utf-8

 # 这种写法,子类Test的首字母要大写,父类object不能大写
class Test(object): count = 0 # 这个count啊,就叫做"类变量" def __init__(self): self.count = count # 这个self.count,就叫实例变量
# self.__class_ 用于获取对应的类本身的变量, 也就是类变量
# 也可写成 Test.count 的形式
self.__class__.count += 1 a = Test(3)
print a.count
输出 3 print Test.count
输出 1 b = Test(-1)
print b.count
输出 -1 print Test.count
输出 2

点我

从上面可知,类变量是所有类的实例(也就是对象)共有的,可共用,所以它是具有叠加性的,每次加1

的结果都会传递给下一个对象!与之相反, 实例变量只能是用于用于同个实例。也就是同一类的实例

可拥有不同的实例变量!

-------------------------------------------------------------------------------------------------

豆瓣上有位仁兄,出了几道关于Python类变量和实例变量的题很有意思,现在 Copy 如下:

class aa:
      w = 10
      def __init__(self):
           self.x = 11
           self.y = 12
      def add(self):
           return self.x + self.y

a = aa()
print a.add()
#下边两条指令各起何作用?结果是输出两个 20 么?还是两个13?还是?
aa.w = 20
a.w = 13
print aa.w, a.w
#程序继续增加如下,怎样理解这t和q呢?他们是___变量
a.t = 14
a.q = 15
print a.t, a.q
#程序继续增加如下,怎样理解这m和n呢?他们是___变量
aa.m = 30
aa.n = 40
print aa.m, aa.n

#好了再来个提升吧
#程序继续增加,下列三个print语句都能正确执行么?为何?
b = aa()
print b.x,b.y
print b.t,b.q
print b.m,b.n

【答案】: 实例变量,类变量,最后一题的第二个print语句不能执行!!!

【结论】: 因为在类以外新建的实例变量是属于某个" 实例/对象 "所有,所以不同实例/对象无法共用,

而类变量,只要是属于同个类的实例,都可以用

原文:    https://www.douban.com/note/335390281/?start=0&post=ok#last

-------------------------------------------------------------------------------------------------

继续了解类,可参考:

【类不类3】: http://www.cnblogs.com/Ruby517/p/5724385.html

【类不类二】Python的类变量与实例变量的更多相关文章

  1. Python基础-类变量和实例变量

    Python基础-类变量和实例变量 写在前面 如非特别说明,下文均基于Python3 大纲: 1. 类变量和实例变量 在Python Tutorial中对于类变量和实例变量是这样描述的: Genera ...

  2. python(四)类变量和实例变量

    转载自[1] 实际这是个实例变量是否指向类变量的问题. python的类变量和实例变量,顾名思义,类变量是指跟类的变量,而实例变量,指跟类的具体实例相关联的变量,具体体现为self.x 等.实际要注意 ...

  3. python的类变量与实例变量

    python的类内部定义的变量 ,形式上没有区分实例变量和类变量(java的静态变量),测试结果如下: 

  4. python的类变量与实例变量以及__dict__属性

    关于Python的实例变量与类变量,先来看一段可能颠覆世界观的例子 #!/usr/bin/env python # -*- coding: utf_8 -*- # Date: 2016年10月10日 ...

  5. Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性

    什么是对象和类 https://www.cnblogs.com/poloyy/p/15178423.html 什么是 Python 类.类对象.实例对象 https://www.cnblogs.com ...

  6. python中的实例方法、静态方法、类方法、类变量和实例变量

    class MyTest: myname = 'peter' # add a instance attribute    def __init__(self, name):        self.n ...

  7. python——实例方法、静态方法、类方法、类变量和实例变量浅析

    概述: 实例方法就是类的实例能够使用的方法. 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使用装饰器@staticmethod定义静态方法.类对象和实例都可调用静态 ...

  8. python的局部变量,全局变量,类变量,实例变量

    定义: a.全局变量:在模块内.在所有函数外面.在class外面,这就是全局变量. b.局部变量:在函数内.在class的方法内(未加self修饰的),这就是局部变量. c. 静态变量:在class内 ...

  9. 关于python类变量和实例变量

    今天在看python的类和实例的时候,突然发现了一个以前遗漏的点,也就是类变量和实例变量.首先需要理解一下类变量和实例变量的概念. 类全局变量:在类中定义,对类和由类生成的实例生效,如果通过方法对类变 ...

随机推荐

  1. angular实战

    目录 [mvvm] controller scope module router directive 项目实战

  2. 更好的抽屉效果(ios)

    昨天项目基本没啥事了,晚上早早的就回家了,躺在床上无聊地玩着手机(Android的),在清理系统垃圾时被一个“360手机助手”给吸引了, 其实我是被它的那个抽屉效果给吸引了,此时你也许会觉得我out了 ...

  3. Define Constraints That Are Minimal and Sufficient 设定不多不少的约束

    Define Constraints That Are Minimal and Sufficient 设定不多不少的约束   今天第二章第二节. 主管不在,然后暂时没什么任务,把第二节看了,然后整理一 ...

  4. 风萧萧兮易水寒 coding一去兮不复还

    这一年都在忙碌中渡过.没有看过日落没有享受过日常.希望可以在忙碌中有些收获.工作马上要三年了. 风萧萧兮易水寒 coding一去兮不复还 记的刚毕业的时候喜欢自己晚上更新下博客.那时候也很忙.但是后来 ...

  5. Drupal与大型网站架构(译)- Large-Scale Web Site Infrastructure and Drupal

    Drupal与大型网站架构(译)- Large-Scale Web Site Infrastructure and Drupal Linuxjournal 网站经典文章翻译,原文地址: Large-S ...

  6. Android插件简介

    /** * @actor Steffen.D * @time 2015.02.06 * @blog http://www.cnblogs.com/steffen */ Android插件简介 Andr ...

  7. 关于javascript变量作用域的研究。

    开始 一个变量的作用域(scope)是程序源代码中定义这个变量的区域.全局变量具有全局作用域,在javascript中的任何地方都是有定义的.然而在函数内申明的变量只在函数体内有定义.他们是局部变量, ...

  8. Linux编程之UDP SOCKET全攻略

    这篇文章将对linux下udp socket编程重要知识点进行总结,无论是开发人员应知应会的,还是说udp socket的一些偏僻知识点,本文都会讲到.尽可能做到,读了一篇文章之后,大家对udp so ...

  9. cornerstone the working copy is locked due to a previous文件lock解决办法

    解决方法: 1,首先要将隐藏文件显示出来 2,找到lock的所在目录,找到.svn/lock 文件,将其删除即可

  10. Linux CentOS7/RHEL7关闭ctrl+alt+delete功能键

            这是本人测试的经过,纯粹记录来看看,最终解决方法在最后面,中间讲的是遇到的一些坑,可以略过不看!!        本人操作经验,转载请表明出处:http://www.cnblogs.c ...