封装:

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

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. 32.Group Anagrams(相同元素的不同组合)

    Level:   Medium 题目描述: Given an array of strings, group anagrams together. Example: Input: ["eat ...

  2. google+ sign in and get the oauth token 转摘:https://gist.github.com/ianbarber/5170508

    package com.example.anothersignintest;   import java.io.IOException;   import com.google.android.gms ...

  3. C# 字符串的拆分

    string str = "ABCD"; char[] strCharArr = str.ToCharArray(); //结果 //strCharArr[0]='A', //st ...

  4. 一、dynamic

    一.dynamic使用: 从一直使用动态类型写接口 返回动态类型出现情况 1.返回接口每次不知道包含那些列(实体类解决) 2.操作的数据类型 不可知(参与数值计算-实体类解决明确类型) Dynamic ...

  5. update all line start with -- to space

    update all line start with -- to space ^--.*$

  6. jenkins持续集成(三): jenkins配置邮件通知

    完成基于jenkins的持续集成部署后,任务构建执行完成,测试结果需要通知到相关人员.这篇博客,介绍如何在jenkins中配置邮件通知的方法... 一.安装邮件插件 由于Jenkins自带的邮件功能比 ...

  7. 使用字符流(Writer、Reader)完成对文件的读写操作

    字符流 字符输出流:Writer,对文件的操作使用子类FileWriter 字符输入流:Reader,对文件的操作使用子类FileReader 每次操作的是一个字符 文件字符操作流会自带缓存,默认大小 ...

  8. maven仓库mirrors

    <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> & ...

  9. 向指定URL 发送POST请求的方法

    java发送psot请求: package com.tea.web.admin; import java.io.BufferedReader; import java.io.IOException; ...

  10. cocos2D-X 线程注意事项

    { 在子线程种是无法创建纹理的,也就是精灵 }