python类的私有属性和方法

Python 对于类的成员没有严格的访问控制限制
关于私有
属性和私有方法,有如下要点:

  1. 两个下划线开头的属性是私有的(private)。其他为公共的(public)。
  2. 类内部可以访问私有属性(方法)
  3. 类外部不能直接访问私有属性(方法),外部可以通过“_类名__私有属性(方法)名”访问私有属性(方法)
class  Students:
    __company = 'ceb bank'#私有属性

    def __init__(self, name, age):
        self.name = name
        self.__age = age #私有实例属性

    def __work(self,job):
        return('My job is {0}'.format(job))

    def print_company(self):
        # 在类内部可以直接调用类的私有属性和私有方法
        print('name:{0},age:{1},{2}'.format(self.name,self.__age,self.__work('testwork')))

s1 = Students('zhuj', 18)
print(dir(s1))
print(s1.name)
print(s1._Students__age) #print(s1.__age) #类的私有属性在外部不能直接调用 可用通过 _Students__age 来调用
print(s1._Students__work('testwork1')) # __work() #类的私有方法在外部不能直接调用,可通过 _Students__work来调用

s1.print_company()

[’_Students__age’, ‘_Students__company’, ‘_Students__work’, ‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘name’, ‘print_company’]
zhuj
18
My job is testwork1
name:zhuj,age:18,My job is testwork

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值