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()