您的位置:首页 > 编程语言 > Python开发

python_面向对象三大特征-封装

2019-06-05 19:27 375 查看

面向对象的三大特征:
封装,继承与多态

封装特征:
实际工作中很多的成员不方便为对象之外的访问或者操作的,所以需要限定以下是否可以操作成员。
封装特性就是对于成员操作进行限制的保护性措施!
封装方法:__属性 __方法

面向对象的封装分为三个级别:
私有化封装  	private
受保护的封装	protected(在继承中讲解)
公共的封装  	public

对象/类成员的访问:
1.当前类/对象内部访问 (在类的结构内部)
2.类和对象的外部访问  (在类的结构外部)
3.类和对象的子类/子对象的访问(在类的结构外部,在子类/对象的内部)
私有化封装:
方法:在成员属性或者方法名称之前,添加双下划线,就可以私有化成员。
特征:私有化的成员属性和方法,无法在类/对象的外部访问;私有化成员仅允许在类/对象的内部访问
公共的封装:
方法: 任何成员在没有进行私有化操作的时候默认都是公共的封装。
特征: 公共的封装成员属性和方法,在任何位置都可以被访问。
访问封装:(禁止使用)
内部访问:名称前加__双下划线即可

python封装秘密(并没有实现真正的私有化!):(了解,但是不允许使用)
其实python没由实现和其他语言一样的面向对象封装策略(还不是很完备)

私有化封装采用了name mangling(改名) 的策略实现的私有化操作。并不是真正的私有化!
改名策略:将原有成员属性或者方法名 修改为 _类名__成员名
访问使用对象._类名__成员名即可
# 面向对象三大特性:封装,继承,多态
# python的封装:1.公共的封装 2.私有化封装 3.受保护的封装
# 公共的封装
# 公共的封装 允许类的内外部进行访问
# 写一个类就是公共的封装
class FengZhuang:
sex = "机器人"
name = "人工智能"
# 成员方法
def feng(self):
print("封印起来")
fz = FengZhuang()
#
# 私有化的封装
# 私有化的封装只能在类内部访问,不能在外部访问
# 私有化封装,就是在属性/方法名前加两个下划线__

class Human():
# 成员属性
name = "人类"
__girlfriend = "女朋友"
# 成员方法
def move(self):
print(self.__girlfriend)
self.__love()
print("人类使用交通工具")
def __love(self):
print("开心的造人")
wenguang = Human()
wenguang.move()
print(wenguang.__girlfriend)
print(Human.girlfriend)
# 调用成员方法

# 强行的访问私有化的属性
# python采用了改名策略来实现的私有化封装
class Human():
# 成员属性
name = "人类"
__girlfriend = "女朋友"
# 成员方法
def move(self):
print(self.__girlfriend)
self.__love()
print("人类使用交通工具")
def __love(self):
print("开心的造人")
wenguang = Human()

# _类名__属性名/方法名
print(wenguang._Human__girlfriend)
wenguang._Human__love()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: