美文网首页Python
Python class属性

Python class属性

作者: 上发条的树 | 来源:发表于2016-05-13 18:06 被阅读81次

class的属性分两种:类属性和实例属性

>>> class AA(object):
...     x = 1
... 
>>> AA.x             #类属性
1
>>> aa = AA()
>>> aa.x             #实例属性
1

属性为不可变对象

实例属性不影响类属性:

>>> aa.x += 1
>>> aa.x
2
>>> AA.x
1

类属性影响实例属性:

>>> AA.x += 1
>>> AA.x
2
>>> aa.x
2

属性为可变对象

>>> class BB(object):
...     y = [1,2,3]

类属性和实例属性相互影响:

>>> bb = BB()
>>> BB.y.append(4)
>>> BB.y
[1, 2, 3, 4]
>>> bb.y
[1, 2, 3, 4]
>>> bb.y.append('aa')
>>> bb.y
[1, 2, 3, 4, 'aa']
>>> BB.y
[1, 2, 3, 4, 'aa']

添加属性

添加类属性,会影响到实例属性:

>>> class CC(object):
...     g = 3
... 
>>> cc = CC()
>>> CC.h = 4
>>> cc.h
4

添加实例属性,不会影响到类属性:

>>> cc.i = 5
>>> CC.i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'CC' has no attribute 'i'
>>> 

可以看出类没有收纳 i 这个属性。进一步说明类属性不受实例属性左右。

相关文章

  • Python class属性

    class的属性分两种:类属性和实例属性 属性为不可变对象 实例属性不影响类属性: 类属性影响实例属性: 属性为可...

  • 属性和方法

    属性和方法 class PyClass:... lesson = 'python'... def ...

  • [译]Python中的类属性与实例属性的区别

    Python中的类属性与实例属性的区别:以下的区别有意义么? class A(object): Vs class ...

  • python 限制访问

    上次在学习python class的时候,我们在class内部定义了属性,在class外部,我们可以通过 实例去访...

  • 第十一章:类

    python类定义格式: class ClassName: ...类属性定义 ...类方法定义 下面是...

  • metaclass的另类用法

    python 的metaclass 一般是创建或初始化class 时使用的,用来增减或调整class 的属性、方法...

  • Python Class的用法

    献给莹莹 1.Python Class的基础用法 类(Class): 用来描述具有相同的属性和方法的对象的集合。它...

  • Python学习笔记09-面向对象高级编程

    __slots__属性 在python中class被实例化后仍然可以绑定新属性和方法,这就是动态语言的特性。 注意...

  • 关于python中的type和object

    python中一切皆对象。一个对象有可能有下面两个属性。__class__ 和__base__ __class__...

  • python class slots

    python 中的类的slots 因为python是动态语言,它允许在程序运行过程中给class实例绑定任何属性和...

网友评论

    本文标题:Python class属性

    本文链接:https://www.haomeiwen.com/subject/jzkmrttx.html