204-面向对象三大特性-1.封装
名词:公共属性、私有属性、公共方法、私有方法
三种特性:
- 封装性:
- 私有属性和私有方法
- 把属性和方法隐藏起来,属性没有特殊要求都用私有属性
- 意义:
- 以面向对象的编程思想进行项目开发
- 封装数据属性:明确的区分内外,控制外部对隐藏的属性的操作行为(保护数据、过滤掉异常数据)
- 继承性:
- 单继承和多继承
- 多态性
属性和方法的封装
1、python中的封装
私有属性(属性的封装)(对属性进行隐藏)
通过__
定义的属性就是私有属性,只能在类内部访问,外部不能访问
在实际工作中,理论上所有的属性都应该封装为私有形式,保证数据的安全!
class 类名(object):
def __init__(self):
self.__属性:
所以封装就是把自身的信息隐藏起来,开放对于接口来操作
具体例子代码:
获取和设置属性都通过自定义的有限制的方法来操作,保证数据的安全性
class Ikun(object):
def __init__(self, name):
self.name = name
self.__age = 25
# 给__age私有属性添加一个访问"接口"
def get_age(self):
# 获取属性之前
# 1、验证用户是否具有查看属性的权限
# 2、如果有则返回私有属性;如果没有则进制访问
return self.__age
# 给__age私有属性添加一个设置"接口"
def set_age(self, age):
# 在设置属性之前
# 1、首先对age进行合理性判断
if not isinstance(age, int)
print('age参数不是整数类型')
if age <= 0:
print('年龄不对劲')
私有方法
作用:降低程序复杂度
私有方法不是为了保护数据,而是为了简化程序复杂度
同样时外部不能调用的方法,只有内部才能调用的方法
class 类名():
# 属性
# 方法
def __方法名(self):
# 私有方法
举一个具体栗子:
atm机取款
class ATM(object):
def __card(self):
print('插卡')
def __auth(self):
print('用户验证')
def __input(self):
print('输入取款金额')
def __take_money(self):
print('取款')
def __print_bill(self):
print('打印账单')
# 定义一个统一的"接口",专门用于实现取款操作
def withdraw(self):
self.__card()
self.__auth()
self.__input()
self.__take_money()
self.__print_bill()
atm = ATM()
atm.withraw()