面向对象基础
面向对象概念
面向对象是一种方法论
对象和实例
对象 object
定义一个类就会得到一个类对象 Object
实例 instance
new className() 创建一个类的实例 instance
对象的实例化
. 运算符 成员运算符 类的成员或者实例的成员
a=b+1
=等式先做右边 先计算右边b+1 然后再把b+1的值赋值给变量a
实例化和初始化过程
实例化 __new__
初始化 __init__
__new__ 返回值是一个self,把self传给__init__做为第一个参数
__init__函数的返回值必须为None
属性
属性
实例属性赋值即定义
类字典
实例字典
类对象
类的定义一旦被解释器执行完后就会得到一个类的对象
函数对象
函数定义的代码被解释器执行完后会得到一个函数对象
实例
实例的属性没有的时候会向上找类的属性
通过实例调用方法是一个bound方法,解释器会自动把自身实例对象做为方法的第一个参数self
通过类对象调用方法则不是bound方法,不会给方法传递第一个参数
实例的属性查找顺序
实例和类的绑定方法
绑定和非绑定方法
访问控制
私有成员通过__age 双下划线进行标识
不管是类对象还是实例对象,都可以通过name.__dict__查看其包含的所有属性,python的对象内存结构是通过字典来存储的
私有属性只不过是修改了一下对象字典中的key的字符串格式,并没有做到实际的访问隔离
保护成员
补丁
修改或者替换类的成员,而调用的方式并没有发生改变
属性装饰器
getter setter deltter
对象销毁
引用计数为0时解释器自动调用类的__del__函数
继承
python3中所有类型和所有对象实例的祖先类是object
object是python3中所有对象的祖先,称为根基类
访问数据路径
__new__创建实例方法是在object类中定义的
实例字典中没有的属性再去找类的字典属性,类的属性是所有实例共享的属性
obj.__dict__
class.__dict__
本文来自博客园,作者:不懂123,转载请注明原文链接:https://www.cnblogs.com/yxh168/p/17251950.html