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__)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值