封装:

封装指的是可以将一堆属性和方法,封装到对象中

ps : 对象就好比一个 “袋子/容器”, 可以存放一堆属性和方法

ps : 存不是目的,目的是为了取,可以通过“对象” d的方式获取属性或方法

为什么要封装:

可以通过“对象”的方式 “存放/获取” 属性或方法

对象拥有 "." 的机制

方便数据的存取

如何封装:

class User:
x = 10
def func()
pass
obj = User
obj.y = 20
obj ---> x, func, y

  

访问机制:

什么是访问机制:

凡是在类内部定义的属性或方法

以__ 开头的属性或方法,都会被限制,外部不能 "直接访问" 该属性原型

PS:看着像该属性或方法隐藏起来了

#python 特有的:

凡是在类内部定义__ 开头的属性或方法,都会变成——类名—— 属性/方法

为什么要用访问机制:

可以对一些隐私信息进行保护

如何实现:

class User:
__name = 'tank' # __name 变形为--> __类名__name
def _run(self):
print('sean is running...')

property

property :一个python内置的装饰器,可以装饰在"类内部方法上"

可以将该方法调用方式由 对象.方法() ----> 对象.方法

为什么要用property:

ps: 在某些场景下,调用的方法只是用来获取计算后的某个值

ps : 必须通过 对象.方法() 方式调用,让该方式看起来像动词、

让名词的方法,调用时更为合理

目的是为了,迷惑调用者,调用的方法误以为是 属性

class User:
def __init__(self, name, weight, height):
self.name = name
self.weight = weight
self.height = height
@property
def dim(self):
return self.weight / (self.height ** 2) # @property
# def name(self):
# return self._name
user_obj = User('WC', 75, 1.4)
user_obj.dim
print(user_obj.dim)

面相对象编程 扩充之封装、访问机制、 property的更多相关文章

  1. python 的面相对象编程--对应c++

    在python的面相对象编程中,我们常常在class中可以看到a(),  _b() ,  __c(), __d()__这样的函数. 由于我是看廖雪峰老师的教程,廖老师为了简单起见,没有引入太多概念,我 ...

  2. 019 python面相对象编程

    一:self的意思 1.说明 self代表类的实例,而非类. 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self. self 代表的是类的实例 ...

  3. PHP面相对象编程-重载、覆盖(重写) 多态、接口

    http://www.ctolib.com/topics-21262.html http://cnn237111.blog.51cto.com/2359144/1284085 http://blog. ...

  4. 关于Python的面相对象编程

    Python 其实不是面向对象的语言,更像是C语言的面向过程编程的语言 但 Python 也支持 class 关键字来实现类的声明与创建 但 Python 的对象更像是 JavaScript 的函数 ...

  5. js编程-面相对象

    //js面相对象编程 //定义constructor构造方法 function myFn(name,sex){ this.name = name; this.sex = sex; } //用proto ...

  6. Java多线程编程核心技术-第2章-对象及变量的并发访问-读书笔记

    第 2 章 对象及变量的并发访问 本章主要内容 synchronized 对象监视器为 Object 时的使用. synchronized 对象监视器为 Class 时的使用. 非线程安全是如何出现的 ...

  7. Java开发知识之Java面相对象

    Java开发知识之Java面相对象上 一丶什么是面相对象 了解什么什么是面相对象.那么首先要了解什么是面相过程. 面相过程的意思就是. 什么事情都亲力亲为. 比如上一讲的排序算法. 我们自己写的. 这 ...

  8. python之面相对象程序设计

    一 面向对象的程序设计的由来 面向对象设计的由来见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 面向对象的程序设计:路飞学院版 ...

  9. go 学习笔记之go是不是面向对象语言是否支持面对对象编程?

    面向对象编程风格深受广大开发者喜欢,尤其是以 C++, Java 为典型代表的编程语言大行其道,十分流行! 有意思的是这两中语言几乎毫无意外都来源于 C 语言,却不同于 C 的面向过程编程,这种面向对 ...

随机推荐

  1. 创建工程时出现 A project with this name already exists 提示

    https://segmentfault.com/a/1190000018513060 创建项目时没注意,后来发现放错了位置或其他问题,想要重新创建同名项目,只在文件夹处删除是不行的.会出现以下提示 ...

  2. 390-基于Zynq UltraScale+ MPSoC的单板嵌入式计算机

    基于Zynq UltraScale+ MPSoC的单板嵌入式计算机 概述:Aldec TySOM-3-ZU7EV,将Xilinx Zynq UltraScale+ ZU7EV MPSoC以及DDR4 ...

  3. pychrome激活

    http://blog.csdn.net/fx677588/article/details/58164902

  4. plsql查询数据中文乱码

    在plsql中进行表数据查询的时候,发现查询出来的中文居然显示为乱码,通过查找资料解决该问题. 1.查看数据的编码(语句:select * from v$nls_parameters) 发现显示的语言 ...

  5. loj2542 「PKUWC2018」随机游走 MinMax 容斥+树上高斯消元+状压 DP

    题目传送门 https://loj.ac/problem/2542 题解 肯定一眼 MinMax 容斥吧. 然后问题就转化为,给定一个集合 \(S\),问期望情况下多少步可以走到 \(S\) 中的点. ...

  6. ConcurrentSkipListMap--跳表的简单使用

    import java.util.Map; import java.util.concurrent.ConcurrentSkipListMap; /** * 跳表的使用 */ public class ...

  7. phpLite 压缩包 百度云网盘资源

    链接: https://pan.baidu.com/s/1b6EnClYOznWa0OFgk4aNQg 密码: gpup

  8. python字符串非空判断

    1. 字符串非空判断 2. list 非空判断

  9. Java IO流总结(二)-示例

    1.使用文件操作的9大方法完成文件的判断 判断文件或目录是否存在 : exits() 返回值boolean型 * 判断是否是文件: isFile() boolean * 判断是否是目录: isDiec ...

  10. 关于iphone设置显示模式为标准模式和放大模式时的区别

    参考来自:https://www.jianshu.com/p/5f61d914114b CGFloat scale = [[UIScreen mainScreen] scale]; CGFloat n ...