属性、方法与封装
面向对象与高级 Python#Python全栈#第三阶段#面向对象与高级 Python#属性、方法与封装约 573 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
类属性与实例属性有什么区别?
追问 默认配置、实例计数和每个用户的购物车分别应该放在哪里?
类属性是列表时,为什么多个实例可能共享它?
追问 如何修复“一个学生选课后,其他学生也出现同一课程”的问题?
给实例的同名属性赋值,是否一定修改类属性?
追问 用
Class.level = 1 与 obj.level = 2 验证遮蔽关系;删除实例属性后会怎样?实例方法、类方法和静态方法如何选择?
追问 需要访问实例状态、需要获得调用类和纯辅助计算分别适合哪一种?
如何用 classmethod 实现从字典创建对象的备用构造方式?
追问 返回
cls(...) 与写死具体类名,对子类复用有什么差异?单下划线与双前导下划线属性有什么区别?
追问 命名约定与名称改写是否等于真正的安全访问控制?
property 可以解决什么接口问题?
追问 如何保持属性访问方式,同时加入校验或计算逻辑?
如何用 property 校验价格并提供只读的订单总额?
追问 存储属性应该叫什么?setter 内再次给同一 property 赋值可能导致什么?
getattr()、setattr() 与 hasattr() 分别做什么?
追问 动态读取属性可能执行 property 吗?为什么不应允许用户任意指定可修改的内部属性?
描述符与 property 有什么联系?
追问
__get__、__set__ 管理什么行为?为什么普通方法绑定也可以从描述符协议理解?