Python----面向对象---封装的意义

一、封装数据属性、明确区分内外:示例代码如下:

 1 class People:
 2     def __init__(self, name, age):
 3         self.__name = name
 4         self.__age = age
 5
 6     def tell_info(self):
 7         print(‘Name:<%s> Age<%s>‘ % (self.__name, self.__age))
 8
 9 p = People(‘egon‘, 18)
10 p.tell_info()
11
12 结果为:
13 Name:<egon> Age<18>

可以防止外部直接修改隐藏属性,并且提供了一个接口,按照固定的格式向调用者输出信息

也可以提供修改隐藏属性的接口,让调用者通过接口修改隐藏的属性,并且可以写上控制逻辑

例如:

 1     def set_info(self, name, age):
 2         if not isinstance(name, str):
 3             print(‘名字必须是字符串类型‘)
 4             return
 5         if not isinstance(age, int):
 6             print(‘年龄必须是数字类型‘)
 7             return
 8         self.__name = name
 9         self.__age = age
10
11
12 p = People(‘egon‘, 18)
13 # p.tell_info()
14
15 p.set_info(‘EGON‘, 18)
16 p.tell_info()
17
18 结果为:
19
20 Name:<EGON> Age<18>

可以看出,修改成功了,并且加上了控制,不让调用者随意更改

二、隔离复杂度

例如:

 1 class ATM:
 2     def __card(self):
 3         print(‘插卡‘)
 4
 5     def __auth(self):
 6         print(‘用户认证‘)
 7
 8     def __input(self):
 9         print(‘输入取款金额‘)
10
11     def __print_bill(self):
12         print(‘打印账单‘)
13
14     def __take_money(self):
15         print(‘取款‘)
16
17     def withdraw(self):
18         self.__card()
19         self.__auth()
20         self.__input()
21         self.__print_bill()
22         self.__take_money()
23
24 a = ATM()
25 a.withdraw()
26
27 结果为:
28
29 插卡
30 用户认证
31 输入取款金额
32 打印账单
33 取款

用户只关注取款,至于里面怎么实现,用户并不关注

三、扩展性高

一个求房间面积的例子,如下:

 1 class Room:
 2     def __init__(self, name, owner, weight, length):
 3         self.name = name
 4         self.owner = owner
 5
 6         self.__weight = weight
 7         self.__length = length
 8
 9     def tell_area(self):
10         return self.__weight * self.__length
11
12 r = Room(‘卫生间‘, ‘alex‘, 10, 10)
13 print(r.tell_area())
14
15 结果为:
16 100

调用者不关心后面的计算方式,只关心房间面积,如果要求体积,只需更改下公式,用户调用不用发生改变

原文地址:https://www.cnblogs.com/xudachen/p/8619740.html

时间: 2024-10-07 23:06:09

Python----面向对象---封装的意义的相关文章

[Python]面向对象封装案例

面向对象封装案例 封装 封装是面向对象编程的一大特点 面向对象编程的第一步 -- 将属性和方法 封装到一个抽象的类中 => 一开始就应该先做需求分析,分析这个类有哪些属性和方法 外界使用类创建对象,然后让对象调用方法 对象方法的细节都被封装在类的内部 => 封装就是把方法,属性都封装在类中,需要的时候使用类的对象直接进行调用即可 小明爱跑步 需求 小明 体重75.0公斤 小明每次跑步会减肥0.5公斤 小明每次吃东西体重会增加1公斤 class Person: # Python的属性是在__in

python面向对象封装

# 面向对象封装案例:为新房子增添家具# 分析对象的属性# 房子属性:户型.面积 # 家具属性: 家具名称.占地面积 class Furniture: def __init__(self, name, area): self.name = name self.area = area def __str__(self): return F"[{self.name}]占地面积{self.area}平方米" class House: def __init__(self, house_type

Python面向对象封装案例

01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类的内部 02. 小明爱跑步 需求 小明 体重 75.0 公斤 小明每次 跑步 会减肥 0.5 公斤 小明每次 吃东西 体重增加 1 公斤 注意: 在 对象的方法内部,是可以 直接访问对象的属性 的! class Person: def __init__(self,name,weight):

python面向对象--封装,继承,多态

1.创建类 class ClassName: ''' 定义类 ''' def __init__(self,name,age):#self代表类的实例,而不是类本身 ''' 类初始化函数 :param name:姓名 :param age: 年龄 ''' self.name=name self.age=age def Class_method(self): ''' 类中的方法 :return: ''' pass 2.类实例化,创建类的对象 c_name1=ClassName('zhangsan',

Python 面向对象 组合-多态与多态性-封装-property

面向对象-组合 1.什么是组合 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象 1 class Foo: 2 xxx = 111 3 4 class Bar: 5 yyy = 222 6 7 obj = Foo() 8 obj.attr = Bar() 9 10 print(obj.xxx) 11 >>>111 12 print(obj.attr.yyy) 13 >>>222 2.为何要用组合 通过为某一个对象添加属性(属性的值是另外一个类的对象)的方式

Python面向对象之:三大特性:继承,封装,多态。

前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到?个对象中. 把固定功能的代码封装到?个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分析. 比如. 你写了?个很?B的函数. 那这个也可以被称为封装. 在?向对象思想中. 是把?些看似?关紧要的内容组合到?起统?进?存储和使?. 这就是封装. 2. 继承: ?类可以?动拥有?类中除了私有属性外的其他所有内容. 说?了, ??可以随便?爹的东?. 但是朋友们, ?定要认清楚?个

19.Python面向对象之:三大特性:继承,封装,多态。

前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到?个对象中. 把固定功能的代码封装到?个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分析. 比如. 你写了?个很?B的函数. 那这个也可以被称为封装. 在?向对象思想中. 是把?些看似?关紧要 的内容组合到?起统?进?存储和使?. 这就是封装. 2. 继承: ?类可以?动拥有?类中除了私有属性外的其他所有内容. 说?了, ??可以随便?爹的东?. 但是朋友们, ?定要认 清楚

Python面向对象编程-封装

1引言 你点击了桌面上的Chrome图标,一个浏览器窗口出现了,输入网址就可以在Internet世界愉快玩耍.这一切是怎么实现的呢?Chromium这个多进程的程序是如何启动各个进程的呢?浏览器主进程(界面进程)启动了哪些线程?如何启动的呢?这些问题一直萦绕在心头,一起来看看源代码吧.本文主要针对Chromium for Mac的源代码,其它操作系统大同小异. 2背景知识 浏览器作为一个应用程序,是以进程的形式运行在操作系统上的.首先,Chromium是一个多进程的应用程序,我们需要了解Chro

Python面向对象之类的封装、继承与多态

Python面向对象中类的三大特性,即封装.继承与多态,同时也是所有语言在面向对象编程中的重要特性,下面用实际的代码部分针对每一种特性做出说明. 一.封装 顾名思义,封装即把我们想要的内容封装到某个地方,因此在这里记录两个问题,一是如何封装.二是如何调用封装的内容. 1.封装数据 class Company:     def __init__(self, dept, leader):         self.dept = dept         self.leader = leader   

python学习 面向对象封装

from collectoins import namedtuplePoint=namedtuple('point',['x','y'])t1=Point(1,2)print(t1.x)print(t1.y)没有方法的类属性不会发生变化    定义简单 不能改变面向对象封装私有属性!!!私有方法!!!用装饰器描述的几个方法@property !!!@classmethod!!@staticmethod! 封装:class Teacher:     def __init__(self,name,p