1.私有属性

class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age #实例属性
self.attack_val = 30
self.__life_val = 100 #前面加两个下划线就是私有变量,私有属性 a = Person('wdc',22)
print(a.age) #实例属性可以直接外面使用和修改
print(a.__life_val) #私有属性外面不可以使用和修改

2.私有属性的用法

class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age #实例属性
self.attack_val = 30
self.__life_val = 100 #前面加两个下划线就是私有变量,私有属性
def get_life_val(self):
print(self.__life_val) #可以在类的内部用方法调用
return self.__life_val #也可以在类的内部用方法返回属性的值 def got_life_val(self): #只能通过内部方法修改私有属性的值
self.__life_val = self.__life_val - 20 a = Person('wdc',22)
b = a.get_life_val() #调用私有属性的方法,并接收返回值
print(b)
a.got_life_val() #执行内部方法修改私有属性
b = a.get_life_val() #调用私有属性的方法,并接收返回值

3.对方法的封装

class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age def __breath(self): #将方法封装
print('{}在呼吸'.format(self.name)) def attack(self):
self.__breath() #只能通过内部的其他方法去调用私有方法 a = Person('wdc',22)
a.attack()

4.如果非要在外部访问或者修改私有属性或者方法可以使用:实例名._类名+方法名()

class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
self.__life_val = 100 def __breath(self): #将方法封装
print('{}在呼吸'.format(self.name)) def attack(self):
self.__breath() #只能通过内部的其他方法去调用私有方法
def get_life_val(self):
print(self.__life_val) a = Person('wdc',22)
a.attack()
# 实例名._类名+方法名()
a._Person__breath() #调用私有方法
a._Person__life_val = 10 #修改私有属性
a.get_life_val()

  注意:实例创建完成后,在外面创建不了私有属性。即使在外面使用a.__wdc = 123创建了属性__wdc,这个属性也不具备私有性质。

python_面向对象——封装的更多相关文章

  1. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...

  2. Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js

    Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一  三个基本的特性:封装.继承与多态1 1.2. 魔 ...

  3. Atitit 面向对象  封装的实现原理

    Atitit 面向对象  封装的实现原理 1.1. 动态对象的模拟使用map+函数接口可以实现1 1.2. 在用结构体 + 函数指针 模拟 对象 1 1.3. This指针..1 1.4. " ...

  4. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  5. OC面向对象—封装

    OC面向对象—封装 一.面向对象和封装 面向对象的三大特性:封装(成员变量).继承和多态 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴 ...

  6. python面向对象封装案例(附:is和==的区别)

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  7. python-面向对象-04_面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  8. python-面向对象-05_面向对象封装案例 II

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

  9. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

随机推荐

  1. 使用第三方Java类库jaudiotagger完成Flac音频文件metadata(元数据)的读和修改

    最近需要使用Java Swing做个读写Flac格式音频文件的小GUI工具,虽然Mp3tag完全可以完成Flac的读写(编辑)任务,但是为了简化工作流程(编辑Flac信息后调用其它系统的接口完成部分信 ...

  2. canal启动报错ERROR c.a.o.canal.parse.inbound.mysql.dbsync.DirectLogFetcher - I/O error while reading from client socket

  3. Beginning Linux Programming 学习--chapter 1 Getting start--What's linux,GNU,HeaderFiles, Libraries

    "文明的建立的不是机器而是思想" -- 托尔斯泰 Linux truly become a viable operating system, especially in the s ...

  4. LeetCode 792. 匹配子序列的单词数(Number of Matching Subsequences)

    792. 匹配子序列的单词数 792. Number of Matching Subsequences 相似题目 392. 判断子序列

  5. k8s ingres 的安装与使用

    1. 安装. 从ingress的官网下载yaml文件. https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy ...

  6. SSRS Reporting Service安装与部署

    安装与部署SSRS步骤 什么是SSRS SQL Server Reporting Serivces(SSRS) 是一种强大的报表设计开发工具或者说是服务,它提供了一系列本地工具和服务,用于创建.部署和 ...

  7. Mybatis笔记4

    mybatis中多对多的步骤 示例:用户和角色,一个用户可以有多个角色,一个角色可以赋予多个用户 步骤: 建立两张表:用户表,角色表,让用户表和角色表具有多对多的关系,需要使用中间表,中间表中包含两张 ...

  8. 题解 Luogu P1110 【[ZJOI2007]报表统计】

    感谢 @cmy962085349 提供的hack数据,已经改对了. 先声明,我好像是题解里写双$fhq$ $treap$里唯一能过的...(最后两个点啊) 思路:首先看题目,$MIN_GAP_SORT ...

  9. 2018ACM-ICPC亚洲区域赛南京站I题Magic Potion(网络流)

    http://codeforces.com/gym/101981/attachments 题意:有n个英雄,m个敌人,k瓶药剂,给出每个英雄可以消灭的敌人的编号.每个英雄只能消灭一个敌人,但每个英雄只 ...

  10. 以php中的自增自自减运算符操作(整型,浮点型,字符串型,布尔型,空类型)数据

    // 环境 // // php版本 // PHP 7.0.33-0+deb9u1 (cli) (built: Dec 7 2018 11:36:49) ( NTS ) // Copyright (c) ...