封装:

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

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. ES6 的基础教程

    一.介绍 1.历史 ECMAScript和JavaScript ECMA是标准,JS是实现 类似于HTML5是标准,IE10.Chrome.FF都是实现 换句话说,将来也能有其他XXXScript来实 ...

  2. C Primer Plus 学习 第三章

    这里只记录我自己以前不懂得地方,明白的地方就略过了 位  字节  字 位    0,1 字节  8位  也就有8位0,1的组合   2的8次方的组合 字      设计计算机时给定的自然存储单元.8位 ...

  3. java插件提示安全设定高,不能加载解决方法

    当不可信小应用程序或应用程序在 Web 浏览器中运行时,我应当如何控制? 本文适用于: Java 版本: 7.0, 8.0 通过 Java 控制面板设置安全级别 在 Java 控制面板中,单击 Sec ...

  4. mongodb使用简介

    mongodb简介 在使用nodejs时候,需要存储一些简单json数据的情况下,很多人会推荐使用mongodb.mongodb是一个文档型数据库,在 sql 中,数据层级是:数据库(db) -> ...

  5. Delphi 安装Cnpack cnvcl后界面不断弹出 Memory Manager's list capablity overflow ,please enlarge it!

    Delphi 安装Cnpack cnvcl后界面不断弹出 Memory Manager's list capablity overflow ,please enlarge it! 解决方法:删除指定  ...

  6. HTML5浏览器

    你可以学会如何使用旧的浏览器正确处理新的HTML5. HTML5 浏览器支持 HTML5 支持所有现代浏览器. 此外,所有的浏览器,旧的和新的,自动处理未被识别的元素作为内联元素. 因为这样,你可以& ...

  7. git常用操作命令2

    以github为例,测试本地库与远程库github之间的交互 1. 本地初始化一个git库     创建一个test文件夹,然后cd到test文件内, 执行git init命令  初始化本地库成功!! ...

  8. JS谷歌浏览器断点调试

    1.找到对应的文件 按F12打开网页调试工具,默认打开的是Elements,显示的是网页标签元素.选择Source,在左侧找到对应的js代码文件(这里是在page标签上找到的) 1.1.如何找到web ...

  9. 安装windows10和fedora23双系统的一些注意事项

    在安装双系统windows10和fedora的过程中遇到了很多的问题,博主也是在慢慢的摸索中最后莫名其妙的成功的安装双系统. 当然,幸亏博主机智的记住了中间的一些细节,所以大致上的有一些注意事项希望能 ...

  10. opencc模块用langconv替换

    将一下两个py下载并放入代码目录:https://raw.githubusercontent.com/skydark/nstools/master/zhtools/langconv.py https: ...