Python基础学习010——公有与私有

# 公有权限:直接书写的方法和属性都是公有,公有的属性和方法在任意地方都可以使用
# 私有权限:在类的内部属性名或方法名前边加上两个下划线,这个属性或方法就是私有的,只能在类的内部使用
# 什么时候定义私有:属性和方法不想在外部被随意访问更改,一般测试用不到私有,开发根据需求文档确认私有


# 案例:定义person类,属性name,age.不希望年龄被随意修改
class Person:
    def __init__(self, name, age):
        self.name = name
        self.__age = age

    def __str__(self):
        return f'姓名:{self.name},年龄:{self.__age}'


xm = Person('小明', 20)
print(xm)
# print(xm.__age)           # 在类外部使用私有属性,会报错,提示没有该属性
xm.__age = 18               # 这一步其实没有更改私有属性,而是在外部添加了一个公有属性__age
# 私有的本质:python解释器在执行代码时,发现属性或方法前面有__,会自动在这个名字前边加上__类名前缀,
# 即添加的__age私有属性在执行时实际叫self._Person__age,跟在外部添加的公有属性__age完全不一样
# 所以实际上print(xm._Person__age)是可以的,但是不要这样使用,了解即可.同理私有方法也是这样
print(xm)

# 就要使用私有方法怎么办呢:在类的内部定义一个公有方法,通过该方法调用私有方法,以此来实现私有方法的间接使用
# ----------------------------------------------------------------------------
# 魔法属性:对象.__dict__:可以将对象具有的属性组成字典打印,包括私有属性
print(xm.__dict__)

你可能感兴趣的:(Python,python,学习,开发语言)