面向对象-私有属性和私有方法
- 私有属性和私有方法
在python中,实例的变量名如果以__开头,就变成了私有变量/属性
实例的函数名以__开头,就变成了私有函数/方法
只有内部可以访问,外部不能访问
class Student(object):
def __init__(self,name,age):
self.name = name
#私有属性(变量名)
self.__age = age
#私有方法(函数名)
def __get_info(self):
print('%s的年龄为%s' %(self.name,self.__age))
student1 = Student('小明',10)
print(student1.name)
print(student1.__age) #打印私有属性
student1.__get_info() #调用私有方法



“”"
问题:私有属性一定不能从外部访问吗?
python2中不能直接访问__属性名 是因为python解释器对外把 __属性名 改成了 _类名__属性名
“”"
print(student1._Student__age)
student1._Student__get_info()

- 私有方法私有属性作用
私有属性可以在类的内部进行转换,然后实例化之后就可以打印私有属性了
class Student(object):
def __init__(self,name,age):
self.name = name
#私有属性
self.__age = age
def get_age(self): #将私有属性转化为一般属性
return self.__age
def set_age(self,age): #重新定义,修改年龄
if 0< age < 100:
self.__age = age
print('修改年龄为%s成功' %age)
else:
raise Exception('年龄错误')
student = Student('小明',10)
# student.get_age()
print(student.get_age()) #打印私有属性
# student.__age = 100
# print(student.__age)
student.set_age(80)




版权声明:本文为weixin_45368526原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。