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
>>> A.a
1
#改变实例a的属性a,实例b和类的a并没有改变
>>> A.a=2
>>> b.a
2
#改变类的属性,实例的属性随着改变,这就好像遗传一样,一个物种分化为两个不同的物种A,B,随便A物种怎么变,对B不会产生影响,但如果穿越时空,改变了它们祖先的一些特点,那么,A,B都会随着改变 >>> dir(A)

['__doc__', '__module__', 'a']

默认产生的属性

C.__name__ 类C的名字(字符串)
C.__doc__ 类C的文档字符串
C.__bases__ 类C的所有父类构成的元组
C.__dict__ 类C的属性
C.__module__ 类C定义所在的模块(1.5 版本新增)
C.__class__ 实例C对应的类(仅新式类中)


>>> A.__module__
'__main__'

Python支持模块间的类继承,也就是说你在文件中定义的类都是这个模块的子类,那么通过from module import class就可以将一个类引入另一个文件,反之也可以定位类的位置

2.Python类实例属性

定义在__init__()方法里的变量就是实例属性,这些属性只有被创建时才会被创建。

>>> class Test():
classVar=2
def __init__(self):
self.instanceVar=3
#提醒一下这里要写self.否则就是个局部变量了,还有__init__没有返回值 >>> atest=Test()
>>> btest=Test()
>>> atest.__dict__
{'instanceVar': 3}
>>> Test.__dict__
{'__module__': '__main__', 'classVar': 2, '__doc__': None, '__init__': <function __init__ at 0x01E68930>}
#注意看实例和类属性的区别,类有类属性,但没有实例属性,实例有实例属性,但没有类属性,那我们可能会疑惑为什么我们可以通过实例访问类属性(就像上面的一样)
#在类实例中查找属性的时候,首先在实例自己的作用域中查找,如果没有找到,则再在类定义的作用域中查找。在对类实例属性进行赋值的时候,实际上会在类实例定义的作用域中添加一个属性(如果还不存在的话),并不会影响到相应类中定义的同名属性。

参见http://www.cnblogs.com/frydsh/p/3194710.html

3.当类属性与实例属性同名时,一个实例访问这个属性时实例属性会覆盖类属性,但类访问时不会。具体还有很多可以看看Python核心编程13章

Python类属性,实例属性的更多相关文章

  1. Python类的实例属性详解

    实例属性 1.类被实例化后才会具有的属性 2.一般在_init_()方法中创建并初始化 3.直接使用即定义:self.<属性名> 4.引用方法:self.<属性名> 5.sel ...

  2. python中的实例属性和类属性

    在python中,类属性和实例属性的区别是什么? 我认为是作用域的不同,实例对象可以访问类属性,类对象不可以访问实例属性.(类的概念本身就是作用域的概念,你不能让一只猫会飞,猫属于猫类,这一类都不会飞 ...

  3. Python中类的声明,使用,属性,实例属性,计算属性及继承,重写

    Python中的类的定义以及使用: 类的定义: 定义类 在Python中,类的定义使用class关键字来实现 语法如下: class className: "类的注释" 类的实体 ...

  4. Python 简明教程 --- 20,Python 类中的属性与方法

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 与客户保持良好的关系可以使生产率加倍. -- Larry Bernstain 目录 类中的变量称为属 ...

  5. Python 类的私有属性与私有方法

    1.隐藏的使用场景 在Python类中,有些属性和方法只希望在对象的内部被使用,而不希望在外部被访问到, 2.定义方式, 在属性名或方法名前增加两个下划线,定义的就是私有属性或方法 #其实这仅仅这是一 ...

  6. python cookbook第三版学习笔记十二:类和对象(三)创建新的类或实例属性

    先介绍几个类中的应用__getattr__,__setattr__,__get__,__set__,__getattribute__,. __getattr__:当在类中找不到attribute的时候 ...

  7. 分别给Python类和实例增加属性和方法

    #定义一个类Student class Student(object): pass #给类增加一个属性name Student.name = 'xm' print Student.name # xm ...

  8. python 类中的公有属性 私有属性 实例属性

    class parent(): i=1 __j=2 class child(parent): m=3 __n=4 def __init__(self,age,name): self.age=age s ...

  9. python中创建实例属性

    虽然可以通过Person类创建出xiaoming.xiaohong等实例,但是这些实例看上除了地址不同外,没有什么其他不同.在现实世界中,区分xiaoming.xiaohong要依靠他们各自的名字.性 ...

  10. python类的__slots__属性、__del__属性、上下文(__enter__和__exit__)、

    常规情况下,类的属性字典是共享的,而实例的字典是独立的.如果一个类的属性较少,但是拥有很多的实例,这些实例的属性字典会占用较多的内存空间.对这样的类来说,为了节省内存空间,可以使用__slots__类 ...

随机推荐

  1. python基础教程-第二章-列表和元组

    本章将引入一个新的概念,:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在 一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构 ...

  2. [Jquery]判断数据类型

    typeof [1, 2, 4] === 'object';typeof new Date() === 'object';  typeof null === 'object'; 由于typeof数组. ...

  3. JavaScript本地对象 内置对象 宿主对象

          在ECMAScript中,所有对象并非同等创建的. 一般来说,可以创建并使用的对象有3种:本地对象.内置对象和宿主对象. 1. 本地对象 ECMA-262把本地对象(native obje ...

  4. OC基础--类

    都是注释哈 类的组成: C语言中函数分为声明和实现 OC中定义一个类也分为声明和实现, 也就是说以后我们在OC中定义类, 就是在写类的声明和实现 编写类的声明和实现: 声明 .h: /*  行为方法: ...

  5. python leetcode 日记 --Contains Duplicate II --219

    题目: Given an array of integers and an integer k, find out whether there are two distinct indices i a ...

  6. php超全局数组变量

    (1)$_SERVER 服务器的相关信息 (2)$_GET 接收用户通过url向服务器传的参数  $POST 接收用户通过http协议向服务器传递的参数 发送get请求 <a href=&quo ...

  7. sqoop的export的说明

    1.通用参数说明

  8. 三部曲一(搜索、数学)-1016-Code

    Code Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 60000/30000K (Java/Other) Total Submissi ...

  9. Spring 和SpringMVC 的父子容器关系

      Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而实际使用时,由于有了强大的注解功能,很多基于XML的配置方式已经被替代,但是在实际项目中,同时配 ...

  10. SAP HR宏 rp-provide-from-last

    运行se11 Database table: 输入 TRMAC 点击display 查看其内容:第14个按钮(ctrl + shift +F10) 再Name 输入:rp-provide-from-l ...