python 类和对象的属性
2015-08-29 17:24
633 查看
python类和对象的属性分为类属性和对象属性两大类,类属性属于类,而对象属性属于对象。
1. 父类的对象属性会被子类的对象继承。
2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性,父类和子类的类属性都会被改变。
3. 子类继承父类的类属性可以通过类名+属性名使用,但是一旦发生赋值,就会新定义一个相同名字的子类自己的类属性。
4. 类的对象可以通过对象名+属性名使用类属性,但是一旦发生赋值,就会新定义一个相同名字的对象属性,而且不会被继承。
eg:
注意:Python中的属性是分层定义的,当我们需要调用某个属性的时候,Python会一层层向上遍历,直到找到那个属性。(某个属性可能出现再不同的层被重复定义,Python向上的过程中,会选取先遇到的那一个,也就是比较低层的属性定义)。
1. 父类的对象属性会被子类的对象继承。
2. 父类的类属性会被子类继承,还是作为类属性,如果父类改变了类属性,父类和子类的类属性都会被改变。
3. 子类继承父类的类属性可以通过类名+属性名使用,但是一旦发生赋值,就会新定义一个相同名字的子类自己的类属性。
4. 类的对象可以通过对象名+属性名使用类属性,但是一旦发生赋值,就会新定义一个相同名字的对象属性,而且不会被继承。
eg:
>>> class A(object): ... value = 1 #类属性 ... def __init__(self): ... self.value2 = 2 # 对象属性 ... >>> a = A() >>> print a.__dict__ {'value2': 2} >>> print A.__dict__ {'__module__': '__main__', 'value': 1, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None, '__init__': <function __init__ at 0x10fcd1de8>} >>> a.value = 2 #新定义了的对象属性,不再是A的类属性 >>> A.value 1 >>> print a.__dict__ {'value2': 2, 'value': 2} >>> class B(A): ... value_B = 3 ... >>> b = B() >>> print b.__dict__ {'value2': 2} >>> print B.__dict__ {'__module__': '__main__', '__doc__': None, 'value_B': 3} >>> B.value 1 >>> B.value = 5 #新定义了B的类属性,不再是继承自A的类属性。 >>> A.value 1 >>> print B.__dict__ {'__module__': '__main__', '__doc__': None, 'value': 5, 'value_B': 3} >>>
注意:Python中的属性是分层定义的,当我们需要调用某个属性的时候,Python会一层层向上遍历,直到找到那个属性。(某个属性可能出现再不同的层被重复定义,Python向上的过程中,会选取先遇到的那一个,也就是比较低层的属性定义)。
相关文章推荐
- python 有关super
- Python爬虫框架Scrapy教程(1)—入门
- Python - 带参数的方法
- Python爬虫框架Scrapy教程(1)—入门
- 2015/8/28 Python基础(2):对象
- 2015/8/26 Python基础(1):基本规则及赋值
- python - os模块中比较有用的部分
- Python使用os.listdir()函数来得目录内容的介绍
- python大法好!
- Python 守护进程 例子
- python zerorpc分布式框架
- python中range函数的使用
- 学习日志---python(列表解析、生成器、字典和集合)
- python学习资源
- python各进制相互转换
- Python包管理工具——Pip
- Python--递归函数
- python中使用Element操作xml
- python 异步I/O
- Python单元测试框架之pytest -- fixtures