Python权限控制

笔记

class Student():
    # 首尾双下划线
    def __init__(self, name, age, gender):
        self._name = name  # self._name受保护的,只能本类和子类访问
        self.__age = age  # self.__age表示私有的,只能类本身去访问
        self.gender = gender  # 普通的实例属性,类的内部,外部及子类都可以访问

    def _fun1(self):  # 受保护的
        print('子类及本身可以访问')

    def __fun2(self):  # 私有的
        print('只有定义的类可以访问')

    def show(self):  # 普通的实例方法
        self._fun1()  # 类本身访问受保护的方法
        self.__fun2()  # 类本身访问私有方法
        print(self._name)  # 受保护的实例属性
        print(self.__age)  # 私有的实例属性


# 创建一个学生类的对象
stu = Student('陈梅梅', 20, '女')
# 类的外部
print(stu._name)
# print(stu.__age) # AttributeError: 'Student' object has no attribute '__age'. Did you mean: '_name'?

# 调用受保护的实例方法
stu._fun1()  # 子类及本身可以访问
# 私有方法
# stu.__sun2() # AttributeError: 'Student' object has no attribute '__sun2'

# 私有的实例属性和方法是真的不能访问吗?
print(stu._Student__age)  # 为什么可以这样访问呢?
stu._Student__fun2()

print(dir(stu))
print(33333+55000+88000+108000+188000+228888+288888+328888+488888+588888)
print(30+200+400+470+488)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值