python-面向对象-私有属性和私有方法

面向对象-私有属性和私有方法

  • 私有属性和私有方法

在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版权协议,转载请附上原文出处链接和本声明。