python对象编程总结(一)
来源:互联网 发布:倪匡蔡澜直播的软件 编辑:程序博客网 时间:2024/06/10 18:02
对于一个python的class而言,拥有类属性,类对象,实例对象,实例属性等概念。
class A: name="A" #类属性,为类所共有,有点类似c++中的静态数据成员 def printName(self): #定义了一个方法 print(self.name)
类支持两种做法:1.引用,即直接使用类对象和类属性。2.实例化,即产生一个对象的实例。比如:
A类定义完成之后就产生了一个全局的类对象,可以通过类对象来访问类中的属性和方法了。当通过A.name(至于为什么可以直接这样访问属性后面再解释,这里只要理解类对象这个概念就行了)来访问时,A.name中的A称为类对象,这点和C++中的有所不同。当然还可以进行实例化操作,a=A( ),这样就产生了一个A的实例对象,此时也可以通过实例对象a来访问属性或者方法了(a.name).
在数据成员前面加__意味着这是私有的。
同时,python中拥有一些内置的方法,比如:构造方法init(self,….)在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。构造方法支持重载,如果用户自己没有重新定义构造方法,系统就自动执行默认的构造方法。
析构方法del(self)在释放对象时调用,支持重载,可以在里面进行一些释放资源的操作,不需要显示调用。
还有其他的一些内置方法:
比如 cmp( ), len( )等,具体的用法可以参考这篇博文:
http://blog.csdn.net/foreveyking/article/details/78077061
对于类属性和实例属性,如果在类方法中引用某个属性,该属性必定是类属性,而如果在实例方法中引用某个属性(不作更改),并且存在同名的类属性,此时若实例对象有该名称的实例属性,则实例属性会屏蔽类属性,即引用的是实例属性,若实例对象没有该名称的实例属性,则引用的是类属性;如果在实例方法更改某个属性,并且存在同名的类属性,此时若实例对象有该名称的实例属性,则修改的是实例属性,若实例对象没有该名称的实例属性,则会创建一个同名称的实例属性。想要修改类属性,如果在类外,可以通过类对象修改,如果在类里面,只有在类方法中进行修改。
从类方法和实例方法以及静态方法的定义形式就可以看出来,类方法的第一个参数是类对象cls,那么通过cls引用的必定是类对象的属性和方法;而实例方法的第一个参数是实例对象self,那么通过self引用的可能是类属性、也有可能是实例属性(这个需要具体分析),不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高。静态方法中不需要额外定义参数,因此在静态方法中引用类属性的话,必须通过类对象来引用。
- python对象编程总结(一)
- python对象编程总结(一)
- Python线程编程(一)线程对象
- Python线程编程(一)线程对象
- Python 面向对象编程(一)
- Python 面向对象编程(一)
- Python 面向对象编程(一)基础
- Python 面向对象编程(一)
- Python 面向对象编程(一)
- Python 面向对象编程(一)
- Python 面向对象编程(一)
- Python 面向对象编程(一)
- Python 面向对象编程(一)
- (一)python面向对象编程
- Python 面向对象 编程(一)
- Python面向对象编程总结(上)
- Python面向对象编程总结(上)
- Python面向对象编程总结(上)
- ORA-27102: out of memory 解决实例
- iOS百度地图集成时反geo 检索发送失败和geo 检索发送失败
- [codevs 1069 关押罪犯] [NOIP2010提高T3]
- 汇编语言的学习
- 06:图像相似度
- python对象编程总结(一)
- Leetcode 9刷题 翻转监测回文(不用额外空间)
- Nginx 架构初探
- Integral Types and Values
- Android6.0权限(短信)—问题记录
- ValueAnimator插值器(Interpolors)和计值器(Evaluator)详解
- WIN7下用EasyBCD引导Ubuntu15.04硬盘安装双系统
- 微信公众号认证流程-微信公众号使用教程3
- 纯纯纯小白的adb入门 讲解(如何查看设备是否连接)