一、封装

封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

所以,在使用面向对象的封装特性时,需要:

  • 将内容封装到某处
  • 从某处调用被封装的内容

第一步:将内容封装到某处

self 是一个形式参数:

  • 当执行 obj1 = Foo('wupeiqi', 18 ) 时,self 等于 obj1
  • 当执行 obj2 = Foo('alex', 78 ) 时,      self 等于 obj2

所以,内容其实被封装到了对象 obj1 和 obj2 中,每个对象中都有 name 和 age 属性,在内存里类似于下图来保存。

第二步:从某处调用被封装的内容

调用被封装的内容时,有两种情况:

  • 通过对象直接调用

  • 通过self间接调用

#通过对象调用方法=============================================
class Foo:
def __init__(self, name, age):
self.name = name
self.age = age
obj1 = Foo('wupeiqi', 18)
print(obj1.name)# 直接调用obj1对象的name属性
print(obj1.age) # 直接调用obj1对象的age属性 #通过self进行间接调用被封装的内容===============================
class Foo:
def __init__(self, name, age):
self.name = name
self.age = age
def get_info(self):
print(self.name)
print(self.age)
obj1 = Foo('wupeiqi', 18)
obj1.get_info()
"""
默认会将obj1传给self参数,即:obj1.detail(obj2),
此时方法内部的 self = obj1,即:self.name 是 wupeiqi ;self.age 是 18
"""

综上所述,对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封装的内容。

最新文章

  1. SUSE查看版本号
  2. HTTP解析
  3. linux系统定时任务
  4. android笔记:DatePickerDialog日期设置对话框
  5. 关于启明星系统(OA系统,预定系统,请假系统等)安全性的说明
  6. selenium依次点击页面的删除按钮
  7. java连接mysql(二)
  8. 关于MFC监听器的相关了解
  9. Android 系统开发学习杂记(转)
  10. lightoj 1011 (状态压缩dp)
  11. 每天一条linux命令——shutdown
  12. COGS 577 蝗灾 [CDQ分治入门题]
  13. 在线App开发平台——应用之星傻瓜式开发平台
  14. iOS内存管理系列之一:对象所有权与引用计数
  15. poj 3046 Ant Counting (DP多重背包变形)
  16. ECSTORE关于MONGODB安装
  17. 无需安装Mono的Jexus
  18. 进程池与线程池(concurrent.futures)
  19. jQuery ajaxForm和 ajaxSubmit注意
  20. ST表与树状数组

热门文章

  1. 28 面向对象编程 instanceof 代码 小结 父类引用指向子类对象
  2. 关于alertmanager报No private IP address found, and explicit IP not provided
  3. Python之VSCode
  4. C 上楼梯 中国石油大学新生训练赛#11
  5. loj2341「WC2018」即时战略(随机化,LCT/动态点分治)
  6. python3 爬虫2--发送请求1
  7. Mac安装和配置Maven 及其第二次启动报错问题解决
  8. springcloud如何实现服务的注册?
  9. 为什么 wait(), notify()和 notifyAll ()必须在同步方法或 者同步块中被调用?
  10. JVM调优常用参数配置