python学习-类属性和实例属性】的更多相关文章

#类属性和实例属性 class Tool(object): #类属性 total = 0 #静态方法 @classmethod def say(self): print("hello world") def __init__(self,new_name): #实例属性 self.name = new_name #类属性 Tool.total += 1 tool1 = Tool("a1") tool2 = Tool("a2") tool3 = To…
1.Python类数据属性:定义在类里面但在函数外面的变量,它们都是静态的. #一段很简单的代码,但反应了很多 >>> class A(): a=1 #一个类里面有个属性a >>> a=A() >>> b=A() >>> a.a 1 >>> b.a 1 >>> A.a 1 #这个属性能被实例和类访问 >>> a.a=2 >>> b.a 1 >>>…
class AAA(): aaa = 10 # 情形1 obj1 = AAA() obj2 = AAA() print obj1.aaa, obj2.aaa, AAA.aaa # 情形2 obj1.aaa += 2 print obj1.aaa, obj2.aaa, AAA.aaa # 情形3 AAA.aaa += 3 print obj1.aaa, obj2.aaa, AAA.aaa 情形1的结果是:10 10 10: 情形2的结果是:12 10 10: 情形3的结果是:12 13 13: 首…
1.一些经典的python错误不去阅读和不重视,就会把错误的做法带入到实际项目中来,甚至造成难以排查问题. 2.有一个大笨猪,按java写观察者模式,java写得是直接在类名下声明一个实例属性(不加static的),他直接翻译成python后,也是直接写在类名下面,这就是大坑了. java里面在类名下面声明的带static为类属性,不带static为实例属性,python如果直接写在类名下面的属性,一律都是类属性,实例属性一般都是在init里面写的,带self字眼的变量. #coding:utf…
1.什么是类对象,实例对象 类对象:类名 实例对象:类创建的对象 2.类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++.Java中类的静态成员变量有点类似.对于公有的类属性,在类外可以通过类对象和实例对象访问 类属性 # 类属性 class people: name="Tom"    #公有的类属性 __age=18      #私有的类属性 p=people() print(p.name)   #实例对象 print(people.n…
标题名字有点长. 之所以想写这个文章是因为碰巧看到网上一篇关于Pyhon中类属性及实例属性区别的帖子.因为我之前也被这个问题困扰过,今天碰巧看到了这篇帖子,发现帖子的作者只是描述了现象,然后对原因的解释比较含糊,并没有从根本上解释这个问题,所以才想写一下我对这个问题的想法. 性子急的可以直接跳到最后看总结. 原帖子地址 问题描述 为了方便对比,我还是使用原帖子的例子:   class AAA(): aaa = 10 # 情形1 obj1 = AAA() obj2 = AAA() print ob…
类属性.实例属性和私有属性 Python中类的属性主要包括类属性,实例属性和私有属性,下面是对三种属性的简单介绍 类属性 / Class Property 类属性在__init__()之外初始化,在外部可以通过类,类实例进行调用, 在内部可以通过类进行调用. 在定义属性的过程中,尽量将各个实例共有的属性定义为类属性,因为定义为实例属性则在每一次实例化时都会初始化一次,为此定义为类属性可以减少内存加快运行速度. 实例属性 / Instance Property 实例属性一般在__init__()内…
按理讲,类属性改变,类的实例对象这个属性也应该被改变,但是在python中实际却不是这样 class test(): name = 111 a = test() b = test() a.name = 222 test.name = 333 print(a.name,b.name,test.name) 输出: 222 333 333 这里a.name的值没有被test.name = 333改变 查看属性在内存中的位置 print(id(a.name)) print(id(b.name)) pri…
一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强…” 什么是面向对象 面向对象就不像面向过程那样按照功能划分模块了,它所关注的是软件系统有哪些参与者,把这些参与者称为对象,找出这些软件系统的参与者也就是对象之后,分析这些对象有哪些特征.哪些行为,以及对象之间的关系,所以说面向对象的开发核心是对象 什么是类 面向对象编程的两个重要的概念:类和对象 类是对象的类型…
1:类通常在一个模块的顶层进行定义.对于Python来说,声明与定义类是同时进行的. 2:类属性仅与其类相绑定,类数据属性仅当需要有更加“静态”数据类型时才变得有用,这种属性是静态变量.它们表示这些数据是与它们所属的类绑定的,不依赖于任何类实例.类似于Java或C++中在一个变量声明前加上static 关键字. 3:方法,比如下面,类MyClass 中的myNoActionMethod 方法,仅仅是一个作为类定义一部分定义的函数.(这使得方法成为类属性).这表示myNoActionMethod…