Python第四十九讲 面向对象三大特性之封装 私有属性方法
前面我们系统学完了单继承、多继承、MRO执行顺序、super高阶用法,搞定了面向对象第二大特性「继承」。 今天我们攻克面向对象第三大核心特性:封装,也是企业开发、面试最高频考点。 很多新手写的代码漏洞百出:年龄可以是负数、工资可以是0、账号密码可以被随意篡改。
Python教程 第45章:实例属性与类属性——共享与独立
一、两种属性的区别上一章我们看清了一件事:__init__ 里每个 self.x = ... 都写进实例自己的字典。但一个类里的数据并不总是"每个对象各有一份"。有些数据天生就该所有对象共用一份——比如全校学生共享同一个校名,改了校名,全校都该跟着变。
Python教程 第49章:方法重写——子类有自己的实现
一、什么是方法重写方法重写(Override,也叫"覆盖"):子类定义和父类同名的方法,用自己的实现顶掉父类那份,实现"同样的方法、不同的行为"。
看懂 @property 背后的那套钩子
这个特性解决什么问题 你每天在用的 @property、classmethod、staticmethod,乃至"实例属性到底存在哪",背后都跑着同一套描述符协议。当你想自定义"读取或写入某个属性时到底发生什么",或者想真正读懂这些语法糖,就必须理解它。
Python教程 第43章:self 与实例方法——对象怎么操作自己
一、self 是什么self 指代"当前实例本身"。在类的方法里,第一个参数必须是 self(名字可换但规范是 self),通过它访问实例的属性和其他方法。先看一个最小例子,再拆开它为什么成立。
图灵星环:Python描述符协议与属性查找机制,类型系统的底层剖析
描述符(Descriptor)是 Python 面向对象体系的底层基石。@property、实例方法、classmethod、staticmethod全部建立在描述符协议之上。
Python教程 第47章:封装与私有属性——保护你的数据
一、什么是封装先看一个"能跑但会亏钱"的类封装的教科书定义只有一句话:把数据隐藏起来,只通过方法访问。可这一章真正要回答的是"为什么非得藏"。
图灵星环:Python面向对象,封装之私有属性与私有方法
面向对象编程有三大核心特性,分别是封装、继承与多态。其中封装是面向对象的基石,也是我们在实际项目开发中使用最频繁、最重要的特性。很多初学者只会简单定义类和属性,却不懂封装的真正意义,导致写出的代码数据混乱、安全性差、维护困难。
Python教程 第46章:类方法与静态方法——不需要实例的方法
一、三种方法的对比上一章我们看到,属性分"每个实例一份"和"全类共享一份"两种。同样的划分也发生在方法上:有些方法必须知道"是哪个对象在调用我",有些只需要知道"是哪个类",还有些两者都不需要。Python 为此提供了三种方法定义方式。