类的访问限制

class ceshi():
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
        pass
    def get_name(self):
        return self.__name
    pass

ceshi = ceshi("小李", 18)
print(ceshi.get_name())
ceshi.__age = 20
print(type(ceshi.__age))

可以通过__name限制内部属性不被外部访问,通过return的方式返回self.__name,则可以得到内部属性

通过ceshi.__age = 20     

       print(type(ceshi.__age))的方式得知,通过ceshi.__age = 20的方式并不能修改内部变量,而是创建了一个变量ceshi.__age = 20,返回的类型时”int"类型。

修改内部变量可以通过以下方式

def set_age(self, age):
    self.__age = age
    pass
ceshi.set_age(20)
print(ceshi.get_age())

注意输出时,ceshi.get_age需要加(),否则返回的是<bound method ceshi.get_age of <__main__.ceshi object at 0x0000026946AABFD0>>

廖老师的访问限制课后题:访问限制 - 廖雪峰的官方网站

class Student(object):
    def __init__(self, name, gender):
        self.__name = name                # 将name变为私有属性(private)
        self.__gender = gender
        pass
    def get_name(self):
        return self.__name                # 外部代码获取name
    def get_gender(self):
        return self.__gender
    def set_name(self, name):
        self.__name = name                # 允许外部代码修改name
        pass
    def set_gender(self, gender):
        self.__gender = gender
        pass
    pass
bart = Student('Bart', 'male')
if bart.get_gender() != 'male':           # 如果bart.get_gender() 不等于“male”
    print('测试失败!')
else:
    bart.set_gender('female')              
    if bart.get_gender() != 'female':      # 如果bart。get_gender()没有被修改为“female”
        print('测试失败!')
    else:
        print('测试成功!')                 #证明修改后的代码name和gender可修改可访问

结果为测试成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值