python-面向对象-类的封装-私有方法私有属性
1.封装,就是把客观事物封装成抽象的类,并规定类中的数据和方法只让可信的类或对象操作。封装可分为两个层面:
(1)第一层面的封装,创建类和对象时,分别创建两者的名称,只能通过类名或者对象名加“.”的方式访问内部的成员和方法,前面介绍的例子其实都是这一层面的封装。
(2)第二层面的封装,类中把某些成员和方法隐藏起来,或者定义为私有,只在类的内部使用,在类的外部无法访问,或者留下少量的接口(方法)供外部访问。
2.私有方法,私有属性的定义
私有方法或私有属性:在属性和名字前面加两个下划线“__”即可。
3.实例
#coding=utf-8 class stu: def __init__(self,name,age): # 定义了两个私有属性__name,__age self.__name = name; self.__age=age; # 定义了私有方法__run def __run(self): print ("run..."); # 定义公有方法getName,目的是使外界能访问私有属性__name,同时使name隐藏起来 def getName(self): name=self.__name; return name; # 定义公有方法getAge,目的是使外界能访问私有属性__age,同时使age隐藏起来 def getAge(self): age=self.__age; return age; #设置age方法 def setAge(self,youage): if youage>120 or youage <1: raise Exception("年龄参数错误") else: self.__age=youage; def getRun(self): self.__run(); s=stu("tom",20); #stu.__run(); #print(s.__name,s.__age); #私有方法run()和私有属性__name,__age都无法直接通过实例和类去调用 #想调用的话,通过第三方公有方法进行。 print(s.getAge()); print(s.getName()) s.getRun(); s.setAge(50) print(s.getAge());
运行结果:
20
tom
run...
50